use of com.emc.storageos.volumecontroller.impl.JobPollResult in project coprhd-controller by CoprHD.
the class HDSCommandHelper method waitForAsyncHDSJob.
/**
* wait for hds async job.
*
* @param job {@link HDSJob}
*/
public void waitForAsyncHDSJob(HDSJob job) throws HDSException {
JobContext jobContext = new JobContext(dbClient, null, null, hdsApiFactory, null, null, null);
long startTime = System.currentTimeMillis();
while (true) {
JobPollResult result = job.poll(jobContext, trackingPeriodInMillis);
if (!job.isJobInTerminalState()) {
if (System.currentTimeMillis() - startTime > HDSJob.ERROR_TRACKING_LIMIT) {
log.error("Timed out waiting on hds job to complete after {} milliseconds", System.currentTimeMillis() - startTime);
throw HDSException.exceptions.asyncTaskFailedTimeout(HDSJob.ERROR_TRACKING_LIMIT);
} else {
try {
Thread.sleep(trackingPeriodInMillis);
} catch (InterruptedException e) {
log.error("Thread waiting for hds job to complete was interrupted and " + "will be resumed");
}
}
} else {
if (job.isJobInTerminalFailedState()) {
throw HDSException.exceptions.asyncTaskFailed(result.getErrorDescription());
}
break;
}
}
}
use of com.emc.storageos.volumecontroller.impl.JobPollResult 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