use of com.emc.storageos.volumecontroller.impl.smis.SmisException in project coprhd-controller by CoprHD.
the class XIVSmisCommandHelper method waitForSmisJob.
private JobStatus waitForSmisJob(StorageSystem storageDevice, SmisJob job, int pollCycleLimit) throws SmisException {
JobStatus status = JobStatus.IN_PROGRESS;
JobContext jobContext = new JobContext(_dbClient, _cimConnection, null, null, null, null, null, this);
long startTime = System.currentTimeMillis();
int pollCycleCount = 0;
while (true) {
JobPollResult result = job.poll(jobContext, SYNC_WRAPPER_WAIT);
pollCycleCount++;
if (result.getJobStatus().equals(JobStatus.IN_PROGRESS)) {
if (pollCycleCount > pollCycleLimit) {
throw new SmisException("Reached maximum number of poll " + pollCycleLimit);
} else if (System.currentTimeMillis() - startTime > SYNC_WRAPPER_TIME_OUT) {
throw new SmisException("Timed out waiting on smis job to complete after " + (System.currentTimeMillis() - startTime) + " milliseconds");
} else {
try {
Thread.sleep(SYNC_WRAPPER_WAIT);
} catch (InterruptedException e) {
_log.error("Thread waiting for smis job to complete was interrupted and will be resumed");
}
}
} else {
status = result.getJobStatus();
if (!status.equals(JobStatus.SUCCESS)) {
throw new SmisException("Smis job failed: " + result.getErrorDescription());
}
break;
}
}
return status;
}
Aggregations