module RocketJob::Batch::StateMachine

State machine for sliced jobs

Public Instance Methods

cleanup!() click to toggle source

Drop the input and output collections

# File lib/rocket_job/batch/state_machine.rb, line 49
def cleanup!
  input_categories.each { |category| input(category).drop }
  output_categories.each { |category| output(category).drop }
end
pausable?() click to toggle source

A batch job can only be processed:

  • Whilst Queued (before processing).

  • During processing.

I.e. Not during before_batch and after_batch.

# File lib/rocket_job/batch/state_machine.rb, line 59
def pausable?
  queued? || paused? || (running? && (sub_state == :processing))
end

Private Instance Methods

rocket_job_clear_sub_state() click to toggle source
# File lib/rocket_job/batch/state_machine.rb, line 74
def rocket_job_clear_sub_state
  self.sub_state = nil
end
rocket_job_processing?() click to toggle source

Is this job still being processed

# File lib/rocket_job/batch/state_machine.rb, line 66
def rocket_job_processing?
  running? && (sub_state == :processing)
end
rocket_job_requeue_failed_slices() click to toggle source

Also retry failed slices when the job itself is re-tried

# File lib/rocket_job/batch/state_machine.rb, line 96
def rocket_job_requeue_failed_slices
  input.requeue_failed
end
rocket_job_requeue_sub_state_after() click to toggle source
# File lib/rocket_job/batch/state_machine.rb, line 85
def rocket_job_requeue_sub_state_after
  self.sub_state   = :processing
  self.worker_name = nil
end
rocket_job_requeue_sub_state_before() click to toggle source

Called after a job in sub_state: :before is requeued

# File lib/rocket_job/batch/state_machine.rb, line 79
def rocket_job_requeue_sub_state_before
  self.sub_state   = nil
  self.started_at  = nil
  self.worker_name = nil
end
rocket_job_requeue_sub_state_processing(worker_name) click to toggle source
# File lib/rocket_job/batch/state_machine.rb, line 90
def rocket_job_requeue_sub_state_processing(worker_name)
  self.worker_name = nil
  input.requeue_running(worker_name)
end
rocket_job_sub_state_before() click to toggle source
# File lib/rocket_job/batch/state_machine.rb, line 70
def rocket_job_sub_state_before
  self.sub_state = :before unless sub_state
end