Class: CDC::Parallel::ResultCollector
- Inherits:
-
Object
- Object
- CDC::Parallel::ResultCollector
- Defined in:
- lib/cdc/parallel/result_collector.rb
Overview
Normalizes values returned by workers.
Constant Summary collapse
- FAILURE_MARKER =
:__cdc_parallel_failure__
Class Method Summary collapse
-
.normalize(value) ⇒ CDC::Core::ProcessorResult
Normalize a worker return value into a ProcessorResult.
-
.worker_failure(error) ⇒ Hash
Build a shareable failure payload that can safely cross a Ractor boundary.
Class Method Details
.normalize(value) ⇒ CDC::Core::ProcessorResult
Normalize a worker return value into a ProcessorResult.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/cdc/parallel/result_collector.rb', line 28 def self.normalize(value) if worker_failure?(value) CDC::Core::ProcessorResult.failure( ProcessorExecutionError.new( original_class: value[:class], original_message: value[:message], original_backtrace: value[:backtrace] ) ) elsif value.is_a?(CDC::Core::ProcessorResult) value else CDC::Core::ProcessorResult.success(value) end end |
.worker_failure(error) ⇒ Hash
Build a shareable failure payload that can safely cross a Ractor boundary.
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/cdc/parallel/result_collector.rb', line 13 def self.worker_failure(error) ::Ractor.make_shareable( { type: FAILURE_MARKER, class: error.class.name, message: error., backtrace: (error.backtrace || []).map { |line| String(line) }.freeze } ) end |