The six states

  • submitted — server accepted, not started
  • working — actively processing
  • input-required — waiting on client for more info
  • completed — done successfully
  • canceled — cancelled before completion
  • failed — terminal error
Advertisement

Valid transitions

submitted → working → completed
                    → failed
                    → input-required → working
                    → canceled (anytime pre-completion)
Advertisement

Polling from client

while (true) {
  var task = client.tasksGet(taskId);
  if (task.status().state() == TaskState.COMPLETED) return task.artifacts();
  if (task.status().isTerminal()) throw new TaskFailedException(task);
  Thread.sleep(pollInterval(task));
}