Class: Dynflow::Executors::Sidekiq::OrchestratorJobs::WorkerDone

Inherits:
InternalJobBase
  • Object
show all
Defined in:
lib/dynflow/executors/sidekiq/orchestrator_jobs.rb

Overview

handles resposnes about finished work form the workers or some event to handle on orchestrator side

Instance Method Summary collapse

Methods inherited from InternalJobBase

inherited, #telemetry_options, #worker_id

Methods included from Serialization::WorkerExtension::ClassMethods

#client_push

Instance Method Details

#perform(work_item, delayed_events = nil) ⇒ Object

Parameters:

  • request_envelope (Dispatcher::Request)
    • request to handle on orchestrator side

    usually to start new execution or to pass some event



14
15
16
17
18
19
20
21
# File 'lib/dynflow/executors/sidekiq/orchestrator_jobs.rb', line 14

def perform(work_item, delayed_events = nil)
  # Usually the step is saved on the worker's side. However if sidekiq is shut down,
  #   then the step may not have been saved so we save it just to be sure
  if work_item.is_a?(Director::StepWorkItem) && work_item.step&.error&.exception_class == ::Sidekiq::Shutdown
    work_item.step.save
  end
  Dynflow.process_world.executor.core.tell([:work_finished, work_item, delayed_events])
end