class Kuroko2::Execution

def self.poll(queue = DEFAULT_QUEUE)

def self.poll(queue = DEFAULT_QUEUE)
  self.transaction do
    unstarted.with(queue).lock.take.tap do |execution|
      execution.touch(:started_at) if execution
    end
  end
end

def completed?

def completed?
  started_at? && finished_at?
end

def finish(output:, exit_status:)

def finish(output:, exit_status:)
  update!(output: output, exit_status: exit_status, finished_at: Time.current)
  job_definition.memory_expectancy.calculate!
end

def finish_by_signal(output:, term_signal:)

def finish_by_signal(output:, term_signal:)
  update!(output: output, term_signal: term_signal, finished_at: Time.current)
  job_definition.memory_expectancy.calculate!
end

def set_default_values

def set_default_values
  self.uuid    ||= SecureRandom.uuid
  self.context ||= {}
end

def success?

def success?
  exit_status == 0
end