Class: Temporalio::Internal::Worker::WorkflowWorker::State

Inherits:
Object
  • Object
show all
Defined in:
lib/temporalio/internal/worker/workflow_worker.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(workflow_definitions:, bridge_worker:, logger:, metric_meter:, data_converter:, deadlock_timeout:, illegal_calls:, namespace:, task_queue:, disable_eager_activity_execution:, workflow_interceptors:, workflow_failure_exception_types:) ⇒ State

Returns a new instance of State.

[View source]

191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 191

def initialize(
  workflow_definitions:, bridge_worker:, logger:, metric_meter:, data_converter:, deadlock_timeout:,
  illegal_calls:, namespace:, task_queue:, disable_eager_activity_execution:,
  workflow_interceptors:, workflow_failure_exception_types:
)
  @workflow_definitions = workflow_definitions
  @bridge_worker = bridge_worker
  @logger = logger
  @metric_meter = metric_meter
  @data_converter = data_converter
  @deadlock_timeout = deadlock_timeout
  @illegal_calls = illegal_calls
  @namespace = namespace
  @task_queue = task_queue
  @disable_eager_activity_execution = disable_eager_activity_execution
  @workflow_interceptors = workflow_interceptors
  @workflow_failure_exception_types = workflow_failure_exception_types

  @running_workflows = {}
  @running_workflows_mutex = Mutex.new
end

Instance Attribute Details

#bridge_workerObject (readonly)

Returns the value of attribute bridge_worker.


185
186
187
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 185

def bridge_worker
  @bridge_worker
end

#data_converterObject (readonly)

Returns the value of attribute data_converter.


185
186
187
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 185

def data_converter
  @data_converter
end

#deadlock_timeoutObject (readonly)

Returns the value of attribute deadlock_timeout.


185
186
187
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 185

def deadlock_timeout
  @deadlock_timeout
end

#disable_eager_activity_executionObject (readonly)

Returns the value of attribute disable_eager_activity_execution.


185
186
187
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 185

def disable_eager_activity_execution
  @disable_eager_activity_execution
end

#illegal_callsObject (readonly)

Returns the value of attribute illegal_calls.


185
186
187
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 185

def illegal_calls
  @illegal_calls
end

#loggerObject (readonly)

Returns the value of attribute logger.


185
186
187
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 185

def logger
  @logger
end

#metric_meterObject (readonly)

Returns the value of attribute metric_meter.


185
186
187
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 185

def metric_meter
  @metric_meter
end

#namespaceObject (readonly)

Returns the value of attribute namespace.


185
186
187
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 185

def namespace
  @namespace
end

#on_eviction=(value) ⇒ Object (writeonly)

Sets the attribute on_eviction

Parameters:

  • value

    the value to set the attribute on_eviction to.


189
190
191
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 189

def on_eviction=(value)
  @on_eviction = value
end

#task_queueObject (readonly)

Returns the value of attribute task_queue.


185
186
187
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 185

def task_queue
  @task_queue
end

#workflow_definitionsObject (readonly)

Returns the value of attribute workflow_definitions.


185
186
187
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 185

def workflow_definitions
  @workflow_definitions
end

#workflow_failure_exception_typesObject (readonly)

Returns the value of attribute workflow_failure_exception_types.


185
186
187
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 185

def workflow_failure_exception_types
  @workflow_failure_exception_types
end

#workflow_interceptorsObject (readonly)

Returns the value of attribute workflow_interceptors.


185
186
187
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 185

def workflow_interceptors
  @workflow_interceptors
end

Instance Method Details

#evict_allObject

[View source]

229
230
231
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 229

def evict_all
  @running_workflows_mutex.synchronize { @running_workflows.clear }
end

#evict_running_workflow(run_id, cache_remove_job) ⇒ Object

[View source]

224
225
226
227
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 224

def evict_running_workflow(run_id, cache_remove_job)
  @running_workflows_mutex.synchronize { @running_workflows.delete(run_id) }
  @on_eviction&.call(run_id, cache_remove_job)
end

#get_or_create_running_workflow(run_id) ⇒ Object

This can never be called at the same time for the same run ID on the same state object

[View source]

214
215
216
217
218
219
220
221
222
# File 'lib/temporalio/internal/worker/workflow_worker.rb', line 214

def get_or_create_running_workflow(run_id, &)
  instance = @running_workflows_mutex.synchronize { @running_workflows[run_id] }
  # If instance is not there, we create it out of lock then store it under lock
  unless instance
    instance = yield
    @running_workflows_mutex.synchronize { @running_workflows[run_id] = instance }
  end
  instance
end