public static void deriveTaskStatus()

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());
    }
  }