2017-02-17 1 views
0

블록 볼륨을 페일 오버 한 후 복제본 (restoreFromSnapshot)에 대한 복원 작업을 시작했습니다. API는 반환 값이 True로 약 2 초 후에 돌아 왔습니다.스냅 샷 복원 작업이 완료되었는지 확인하는 방법

나는 즉시 원래 볼륨으로 장애 복구 할 수있는 API를 해고하고, 다음과 같은 오류

SoftLayerAPIError (SoftLayer_Exception_Network_Storage_BlockingOperationInProgress)를 가지고 : 스냅 복원 볼륨 IBM02SEL328078-363에 현재 진행 중입니다. 이 프로세스 중에 요청 된 작업 (복제 볼륨에서 즉각적인 장애 복구)은 프로세스가 완료 될 때까지 완료 할 수 없습니다.

이렇게하면 restoreFromSnapshot()이 성공을 반환하더라도 실제 복원 작업이 아직 진행 중일 수 있습니다.

그럼 복원 작업의 현재 상태를 확인하고 성공적으로 완료되었는지 확인하는 방법은 무엇입니까?

답변

0

Sofltayer의 리소스를 통해 작업을 수행하면 트랜잭션이 생성되고 (거의 모든 경우) 트랜잭션이 완료 될 때까지 리소스를 통해 새 작업을 수행 할 수 없습니다. 따라서 작업을 복원할지 여부를 확인하는 방법은 트랜잭션이 실행되고 있지 않음을 확인하는 것입니다.이 경우 해당 프롬프트에 대해 use the SoftLayer_Network_Storage::getActiveTransactions 메서드를 사용할 수 있습니다.

RESTful.

GET https://$USERID:[email protected]/rest/v3/SoftLayer_Network_Storage/$storageID/getActiveTransactions.json 

Note replace: $USERID $APIIKEY and $storageID 

방법은 트랜잭션이 끝난 방법은 빈 결과를 반환하는 경우 저장에서 실행되는 트랜잭션을 반환합니다.

그러나이 방법에는 단점이 있으며 때로는 트랜잭션 생성에 약간의 시간이 걸리기 때문에 트랜잭션을 볼 때까지 API를 반복적으로 요청해야하며 그렇지 않은 경우 트랜잭션이 너무 빨리 실행되므로 결코 볼 수 없습니다 따라서 트랜잭션이 몇 분 안에 트랜잭션이 보이지 않으면 코드를 처리해야하므로이 작업이 매우 빨리 완료되어 저장소를 통해 다른 작업을 시작할 수 있습니다.

관련 문제