in maestro-engine/src/main/java/com/netflix/maestro/engine/utils/TaskHelper.java [313:362]
public static void deriveTaskStatus(Task task, StepRuntimeSummary runtimeSummary) {
switch (runtimeSummary.getRuntimeState().getStatus()) {
case NOT_CREATED:
case CREATED:
case INITIALIZED:
case PAUSED:
case WAITING_FOR_SIGNALS:
case EVALUATING_PARAMS:
case WAITING_FOR_PERMITS:
case STARTING:
case RUNNING:
case FINISHING:
task.setStatus(Task.Status.IN_PROGRESS);
break;
case DISABLED:
case UNSATISFIED:
case SKIPPED:
case SUCCEEDED:
case COMPLETED_WITH_ERROR:
task.setStatus(Task.Status.COMPLETED);
break;
case USER_FAILED:
case PLATFORM_FAILED:
case TIMEOUT_FAILED:
task.setStatus(Task.Status.FAILED);
task.setStartDelayInSeconds(
runtimeSummary
.getStepRetry()
.getNextRetryDelay(runtimeSummary.getRuntimeState().getStatus()));
break;
case FATALLY_FAILED:
case INTERNALLY_FAILED:
task.setStatus(Task.Status.FAILED);
task.setStartDelayInSeconds(Translator.DEFAULT_FLOW_TASK_DELAY);
break;
case STOPPED:
task.setStatus(Task.Status.CANCELED);
break;
case TIMED_OUT:
task.setStatus(Task.Status.TIMED_OUT);
break;
default:
throw new MaestroInternalError(
"Entered an unexpected state [%s] for step %s",
runtimeSummary.getRuntimeState().getStatus(), runtimeSummary.getIdentity());
}
if (task.getStatus().isTerminal()) {
task.setEndTime(runtimeSummary.getRuntimeState().getEndTime());
}
}