class Patriot::Command::PostProcessor::Retrial

Constants

COUNT_PROP_KEY
INTERVAL_PROP_KEY

Public Instance Methods

process_failure(cmd, worker, job_ticket) click to toggle source
# File lib/patriot/command/post_processor/retrial.rb, line 16
def process_failure(cmd, worker, job_ticket)
  found = false
  cmd.post_processors.each do |pp|
    next unless pp.is_a?(Patriot::Command::PostProcessor::Retrial)
    raise "multiple retry processors in #{cmd.job_id}" if found
    found = true
    # count first attempt in
    pp.props[COUNT_PROP_KEY] = pp.props[COUNT_PROP_KEY] - 1
    return true if pp.props[COUNT_PROP_KEY] < 1
    cmd.start_datetime = Time.now + pp.props[INTERVAL_PROP_KEY]
  end
  job = cmd.to_job
  current_config = worker.job_store.get_job(job.job_id)
  job[Patriot::Command::PRODUCTS_ATTR] = current_config[Patriot::Command::PRODUCTS_ATTR]
  job[Patriot::Command::REQUISITES_ATTR] = current_config[Patriot::Command::REQUISITES_ATTR]
  job[Patriot::Command::STATE_ATTR] = Patriot::JobStore::JobState::WAIT
  worker.job_store.register(Time.now.to_i, [job])
  return false
end
validate_props(props) click to toggle source
# File lib/patriot/command/post_processor/retrial.rb, line 11
def validate_props(props)
  raise "#{COUNT_PROP_KEY} is not specified" unless props.has_key?(COUNT_PROP_KEY)
  raise "#{INTERVAL_PROP_KEY} is not specified" unless props.has_key?(INTERVAL_PROP_KEY)
end