in client-http/src/main/java/org/apache/livy/client/http/JobHandleImpl.java [226:269]
public void run() {
try {
JobStatus status = conn.get(JobStatus.class, "/%d/jobs/%d", sessionId, jobId);
T result = null;
Throwable error = null;
boolean finished = false;
switch (status.state) {
case SUCCEEDED:
if (status.result != null) {
@SuppressWarnings("unchecked")
T localResult = (T) serializer.deserialize(ByteBuffer.wrap(status.result));
result = localResult;
}
finished = true;
break;
case FAILED:
// TODO: better exception.
error = new RuntimeException(status.error);
finished = true;
break;
case CANCELLED:
isCancelled = true;
finished = true;
break;
default:
// Nothing to do.
}
if (finished) {
setResult(result, error, status.state);
} else if (status.state != state) {
changeState(status.state);
}
if (!finished) {
currentInterval = Math.min(currentInterval * 2, maxPollInterval);
pollTask = executor.schedule(this, currentInterval, TimeUnit.MILLISECONDS);
}
} catch (Exception e) {
setResult(null, e, State.FAILED);
}
}