Method: Barbeque::Executor::Docker#poll_execution

Defined in:
lib/barbeque/executor/docker.rb

#poll_execution(job_execution) ⇒ Object

Parameters:



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/barbeque/executor/docker.rb', line 57

def poll_execution(job_execution)
  container = Barbeque::DockerContainer.find_by!(message_id: job_execution.message_id)
  info = inspect_container(container.container_id)
  if info['State'] && info['State']['Status'] != 'running'
    finished_at = Time.zone.parse(info['State']['FinishedAt'])
    exit_code = info['State']['ExitCode']
    job_execution.update!(status: exit_code == 0 ? :success : :failed, finished_at: finished_at)

    stdout, stderr = get_logs(container.container_id)
    Barbeque::ExecutionLog.save_stdout_and_stderr(job_execution, stdout, stderr)
    Barbeque::SlackNotifier.notify_job_execution(job_execution)
    if exit_code != 0
      job_execution.retry_if_possible!
    end
  end
end