diff --git a/lib/temporal/activity/poller.rb b/lib/temporal/activity/poller.rb index c07eba7e..4157f0f3 100644 --- a/lib/temporal/activity/poller.rb +++ b/lib/temporal/activity/poller.rb @@ -78,7 +78,7 @@ def poll_for_task rescue StandardError => error Temporal.logger.error("Unable to poll activity task queue", { namespace: namespace, task_queue: task_queue, error: error.inspect }) - Temporal::ErrorHandler.handle(error) + Temporal::ErrorHandler.handle(error, config) nil end diff --git a/lib/temporal/activity/task_processor.rb b/lib/temporal/activity/task_processor.rb index 173a2bc9..f676cf21 100644 --- a/lib/temporal/activity/task_processor.rb +++ b/lib/temporal/activity/task_processor.rb @@ -41,7 +41,7 @@ def process # Do not complete asynchronous activities, these should be completed manually respond_completed(result) unless context.async? rescue StandardError, ScriptError => error - Temporal::ErrorHandler.handle(error, metadata: metadata) + Temporal::ErrorHandler.handle(error, config, metadata: metadata) respond_failed(error) ensure @@ -76,7 +76,7 @@ def respond_completed(result) rescue StandardError => error Temporal.logger.error("Unable to complete Activity", metadata.to_h.merge(error: error.inspect)) - Temporal::ErrorHandler.handle(error, metadata: metadata) + Temporal::ErrorHandler.handle(error, config, metadata: metadata) end def respond_failed(error) @@ -90,7 +90,7 @@ def respond_failed(error) rescue StandardError => error Temporal.logger.error("Unable to fail Activity task", metadata.to_h.merge(error: error.inspect)) - Temporal::ErrorHandler.handle(error, metadata: metadata) + Temporal::ErrorHandler.handle(error, config, metadata: metadata) end end end diff --git a/lib/temporal/error_handler.rb b/lib/temporal/error_handler.rb index 9702edcb..98fca99f 100644 --- a/lib/temporal/error_handler.rb +++ b/lib/temporal/error_handler.rb @@ -1,7 +1,7 @@ module Temporal module ErrorHandler - def self.handle(error, metadata: nil) - Temporal.configuration.error_handlers.each do |handler| + def self.handle(error, configuration, metadata: nil) + configuration.error_handlers.each do |handler| handler.call(error, metadata: metadata) rescue StandardError => e Temporal.logger.error("Error handler failed", { error: e.inspect }) diff --git a/lib/temporal/testing/local_workflow_context.rb b/lib/temporal/testing/local_workflow_context.rb index 3642a7d3..f9422af8 100644 --- a/lib/temporal/testing/local_workflow_context.rb +++ b/lib/temporal/testing/local_workflow_context.rb @@ -9,7 +9,7 @@ module Temporal module Testing class LocalWorkflowContext - attr_reader :metadata + attr_reader :metadata, :config def initialize(execution, workflow_id, run_id, disabled_releases, metadata, config = Temporal.configuration) @last_event_id = 0 @@ -188,7 +188,7 @@ def cancel(target, cancelation_id) private - attr_reader :execution, :run_id, :workflow_id, :disabled_releases, :config + attr_reader :execution, :run_id, :workflow_id, :disabled_releases def completed! @completed = true diff --git a/lib/temporal/workflow.rb b/lib/temporal/workflow.rb index 06bf2b80..3b5dcfe6 100644 --- a/lib/temporal/workflow.rb +++ b/lib/temporal/workflow.rb @@ -20,7 +20,7 @@ def self.execute_in_context(context, input) Temporal.logger.error("Workflow execution failed", context.metadata.to_h.merge(error: error.inspect)) Temporal.logger.debug(error.backtrace.join("\n")) - Temporal::ErrorHandler.handle(error, metadata: context.metadata) + Temporal::ErrorHandler.handle(error, context.config, metadata: context.metadata) context.fail(error) ensure diff --git a/lib/temporal/workflow/context.rb b/lib/temporal/workflow/context.rb index d4541840..709211c8 100644 --- a/lib/temporal/workflow/context.rb +++ b/lib/temporal/workflow/context.rb @@ -15,7 +15,7 @@ module Temporal class Workflow class Context - attr_reader :metadata + attr_reader :metadata, :config def initialize(state_manager, dispatcher, workflow_class, metadata, config) @state_manager = state_manager @@ -258,7 +258,7 @@ def cancel(target, cancelation_id) private - attr_reader :state_manager, :dispatcher, :workflow_class, :config + attr_reader :state_manager, :dispatcher, :workflow_class def completed! @completed = true diff --git a/lib/temporal/workflow/poller.rb b/lib/temporal/workflow/poller.rb index f312d0f9..c0e7b950 100644 --- a/lib/temporal/workflow/poller.rb +++ b/lib/temporal/workflow/poller.rb @@ -77,7 +77,7 @@ def poll_for_task connection.poll_workflow_task_queue(namespace: namespace, task_queue: task_queue) rescue StandardError => error Temporal.logger.error("Unable to poll Workflow task queue", { namespace: namespace, task_queue: task_queue, error: error.inspect }) - Temporal::ErrorHandler.handle(error) + Temporal::ErrorHandler.handle(error, config) nil end diff --git a/lib/temporal/workflow/task_processor.rb b/lib/temporal/workflow/task_processor.rb index c22e2c7d..f2d0a3c2 100644 --- a/lib/temporal/workflow/task_processor.rb +++ b/lib/temporal/workflow/task_processor.rb @@ -40,7 +40,7 @@ def process complete_task(commands) rescue StandardError => error - Temporal::ErrorHandler.handle(error, metadata: metadata) + Temporal::ErrorHandler.handle(error, config, metadata: metadata) fail_task(error) ensure @@ -110,7 +110,7 @@ def fail_task(error) rescue StandardError => error Temporal.logger.error("Unable to fail Workflow task", metadata.to_h.merge(error: error.inspect)) - Temporal::ErrorHandler.handle(error, metadata: metadata) + Temporal::ErrorHandler.handle(error, config, metadata: metadata) end end end diff --git a/spec/unit/lib/temporal/activity/task_processor_spec.rb b/spec/unit/lib/temporal/activity/task_processor_spec.rb index 91e1eccf..bb5159c7 100644 --- a/spec/unit/lib/temporal/activity/task_processor_spec.rb +++ b/spec/unit/lib/temporal/activity/task_processor_spec.rb @@ -11,7 +11,7 @@ Fabricate( :api_activity_task, activity_name: activity_name, - input: Temporal.configuration.converter.to_payloads(input) + input: config.converter.to_payloads(input) ) end let(:metadata) { Temporal::Metadata.generate(Temporal::Metadata::ACTIVITY_TYPE, task) } @@ -70,7 +70,7 @@ reported_error = nil reported_metadata = nil - Temporal.configuration.on_error do |error, metadata: nil| + config.on_error do |error, metadata: nil| reported_error = error reported_metadata = metadata.to_h end @@ -187,7 +187,7 @@ reported_error = nil reported_metadata = nil - Temporal.configuration.on_error do |error, metadata: nil| + config.on_error do |error, metadata: nil| reported_error = error reported_metadata = metadata end diff --git a/spec/unit/lib/temporal/workflow/task_processor_spec.rb b/spec/unit/lib/temporal/workflow/task_processor_spec.rb index d1537bcc..695b3da6 100644 --- a/spec/unit/lib/temporal/workflow/task_processor_spec.rb +++ b/spec/unit/lib/temporal/workflow/task_processor_spec.rb @@ -44,7 +44,7 @@ reported_error = nil reported_metadata = nil - Temporal.configuration.on_error do |error, metadata: nil| + config.on_error do |error, metadata: nil| reported_error = error reported_metadata = metadata end @@ -154,7 +154,7 @@ reported_error = nil reported_metadata = nil - Temporal.configuration.on_error do |error, metadata: nil| + config.on_error do |error, metadata: nil| reported_error = error reported_metadata = metadata end