temporalio 0.2.0-arm64-darwin → 0.3.0-arm64-darwin
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +2 -0
- data/Gemfile +3 -3
- data/Rakefile +10 -296
- data/lib/temporalio/activity/complete_async_error.rb +1 -1
- data/lib/temporalio/activity/context.rb +5 -2
- data/lib/temporalio/activity/definition.rb +163 -65
- data/lib/temporalio/activity/info.rb +22 -21
- data/lib/temporalio/activity.rb +2 -59
- data/lib/temporalio/api/activity/v1/message.rb +25 -0
- data/lib/temporalio/api/cloud/account/v1/message.rb +28 -0
- data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +34 -1
- data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +1 -1
- data/lib/temporalio/api/cloud/identity/v1/message.rb +6 -1
- data/lib/temporalio/api/cloud/namespace/v1/message.rb +8 -1
- data/lib/temporalio/api/cloud/nexus/v1/message.rb +31 -0
- data/lib/temporalio/api/cloud/operation/v1/message.rb +2 -1
- data/lib/temporalio/api/cloud/region/v1/message.rb +2 -1
- data/lib/temporalio/api/cloud/resource/v1/message.rb +23 -0
- data/lib/temporalio/api/cloud/sink/v1/message.rb +24 -0
- data/lib/temporalio/api/cloud/usage/v1/message.rb +31 -0
- data/lib/temporalio/api/common/v1/message.rb +7 -1
- data/lib/temporalio/api/enums/v1/event_type.rb +1 -1
- data/lib/temporalio/api/enums/v1/failed_cause.rb +1 -1
- data/lib/temporalio/api/enums/v1/reset.rb +1 -1
- data/lib/temporalio/api/history/v1/message.rb +1 -1
- data/lib/temporalio/api/nexus/v1/message.rb +2 -2
- data/lib/temporalio/api/operatorservice/v1/service.rb +1 -1
- data/lib/temporalio/api/payload_visitor.rb +1513 -0
- data/lib/temporalio/api/schedule/v1/message.rb +2 -1
- data/lib/temporalio/api/testservice/v1/request_response.rb +31 -0
- data/lib/temporalio/api/testservice/v1/service.rb +23 -0
- data/lib/temporalio/api/workflow/v1/message.rb +1 -1
- data/lib/temporalio/api/workflowservice/v1/request_response.rb +17 -2
- data/lib/temporalio/api/workflowservice/v1/service.rb +1 -1
- data/lib/temporalio/api.rb +1 -0
- data/lib/temporalio/cancellation.rb +34 -14
- data/lib/temporalio/client/async_activity_handle.rb +12 -37
- data/lib/temporalio/client/connection/cloud_service.rb +309 -231
- data/lib/temporalio/client/connection/operator_service.rb +36 -84
- data/lib/temporalio/client/connection/service.rb +6 -5
- data/lib/temporalio/client/connection/test_service.rb +111 -0
- data/lib/temporalio/client/connection/workflow_service.rb +264 -441
- data/lib/temporalio/client/connection.rb +90 -44
- data/lib/temporalio/client/interceptor.rb +160 -60
- data/lib/temporalio/client/schedule.rb +967 -0
- data/lib/temporalio/client/schedule_handle.rb +126 -0
- data/lib/temporalio/client/workflow_execution.rb +7 -10
- data/lib/temporalio/client/workflow_handle.rb +38 -95
- data/lib/temporalio/client/workflow_update_handle.rb +3 -5
- data/lib/temporalio/client.rb +122 -42
- data/lib/temporalio/common_enums.rb +17 -0
- data/lib/temporalio/converters/data_converter.rb +4 -7
- data/lib/temporalio/converters/failure_converter.rb +5 -3
- data/lib/temporalio/converters/payload_converter/composite.rb +4 -0
- data/lib/temporalio/converters/payload_converter.rb +6 -8
- data/lib/temporalio/converters/raw_value.rb +20 -0
- data/lib/temporalio/error/failure.rb +1 -1
- data/lib/temporalio/error.rb +10 -2
- data/lib/temporalio/internal/bridge/3.2/temporalio_bridge.bundle +0 -0
- data/lib/temporalio/internal/bridge/3.3/temporalio_bridge.bundle +0 -0
- data/lib/temporalio/internal/bridge/{3.1 → 3.4}/temporalio_bridge.bundle +0 -0
- data/lib/temporalio/internal/bridge/api/core_interface.rb +5 -1
- data/lib/temporalio/internal/bridge/api/nexus/nexus.rb +33 -0
- data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +5 -1
- data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +4 -1
- data/lib/temporalio/internal/bridge/client.rb +11 -6
- data/lib/temporalio/internal/bridge/testing.rb +20 -0
- data/lib/temporalio/internal/bridge/worker.rb +2 -0
- data/lib/temporalio/internal/bridge.rb +1 -1
- data/lib/temporalio/internal/client/implementation.rb +245 -70
- data/lib/temporalio/internal/metric.rb +122 -0
- data/lib/temporalio/internal/proto_utils.rb +86 -7
- data/lib/temporalio/internal/worker/activity_worker.rb +52 -24
- data/lib/temporalio/internal/worker/multi_runner.rb +51 -7
- data/lib/temporalio/internal/worker/workflow_instance/child_workflow_handle.rb +54 -0
- data/lib/temporalio/internal/worker/workflow_instance/context.rb +329 -0
- data/lib/temporalio/internal/worker/workflow_instance/details.rb +44 -0
- data/lib/temporalio/internal/worker/workflow_instance/external_workflow_handle.rb +32 -0
- data/lib/temporalio/internal/worker/workflow_instance/externally_immutable_hash.rb +22 -0
- data/lib/temporalio/internal/worker/workflow_instance/handler_execution.rb +25 -0
- data/lib/temporalio/internal/worker/workflow_instance/handler_hash.rb +41 -0
- data/lib/temporalio/internal/worker/workflow_instance/illegal_call_tracer.rb +97 -0
- data/lib/temporalio/internal/worker/workflow_instance/inbound_implementation.rb +62 -0
- data/lib/temporalio/internal/worker/workflow_instance/outbound_implementation.rb +415 -0
- data/lib/temporalio/internal/worker/workflow_instance/replay_safe_logger.rb +37 -0
- data/lib/temporalio/internal/worker/workflow_instance/replay_safe_metric.rb +40 -0
- data/lib/temporalio/internal/worker/workflow_instance/scheduler.rb +163 -0
- data/lib/temporalio/internal/worker/workflow_instance.rb +730 -0
- data/lib/temporalio/internal/worker/workflow_worker.rb +196 -0
- data/lib/temporalio/metric.rb +109 -0
- data/lib/temporalio/retry_policy.rb +37 -14
- data/lib/temporalio/runtime.rb +118 -75
- data/lib/temporalio/search_attributes.rb +80 -37
- data/lib/temporalio/testing/activity_environment.rb +2 -2
- data/lib/temporalio/testing/workflow_environment.rb +251 -5
- data/lib/temporalio/version.rb +1 -1
- data/lib/temporalio/worker/activity_executor/thread_pool.rb +9 -217
- data/lib/temporalio/worker/activity_executor.rb +3 -3
- data/lib/temporalio/worker/interceptor.rb +340 -66
- data/lib/temporalio/worker/thread_pool.rb +237 -0
- data/lib/temporalio/worker/workflow_executor/thread_pool.rb +230 -0
- data/lib/temporalio/worker/workflow_executor.rb +26 -0
- data/lib/temporalio/worker.rb +201 -30
- data/lib/temporalio/workflow/activity_cancellation_type.rb +20 -0
- data/lib/temporalio/workflow/child_workflow_cancellation_type.rb +21 -0
- data/lib/temporalio/workflow/child_workflow_handle.rb +43 -0
- data/lib/temporalio/workflow/definition.rb +566 -0
- data/lib/temporalio/workflow/external_workflow_handle.rb +41 -0
- data/lib/temporalio/workflow/future.rb +151 -0
- data/lib/temporalio/workflow/handler_unfinished_policy.rb +13 -0
- data/lib/temporalio/workflow/info.rb +82 -0
- data/lib/temporalio/workflow/parent_close_policy.rb +19 -0
- data/lib/temporalio/workflow/update_info.rb +20 -0
- data/lib/temporalio/workflow.rb +523 -0
- data/lib/temporalio.rb +4 -0
- data/temporalio.gemspec +2 -2
- metadata +52 -6
| @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 3 | 
             
            require 'temporalio/error'
         | 
| 4 | 
            +
            require 'temporalio/workflow'
         | 
| 4 5 |  | 
| 5 6 | 
             
            module Temporalio
         | 
| 6 7 | 
             
              # Cancellation representation, often known as a "cancellation token". This is used by clients, activities, and
         | 
| @@ -19,7 +20,7 @@ module Temporalio | |
| 19 20 | 
             
                  @canceled_reason = nil
         | 
| 20 21 | 
             
                  @canceled_mutex = Mutex.new
         | 
| 21 22 | 
             
                  @canceled_cond_var = nil
         | 
| 22 | 
            -
                  @cancel_callbacks =  | 
| 23 | 
            +
                  @cancel_callbacks = {} # Keyed by sentinel value, but value iteration still is deterministic
         | 
| 23 24 | 
             
                  @shield_depth = 0
         | 
| 24 25 | 
             
                  @shield_pending_cancel = nil # When pending, set as single-reason array
         | 
| 25 26 | 
             
                  parents.each { |p| p.add_cancel_callback { on_cancel(reason: p.canceled_reason) } }
         | 
| @@ -59,15 +60,24 @@ module Temporalio | |
| 59 60 | 
             
                  [self, proc { |reason: nil| on_cancel(reason:) }]
         | 
| 60 61 | 
             
                end
         | 
| 61 62 |  | 
| 62 | 
            -
                # Wait on this to be canceled. This is backed by a {::ConditionVariable} | 
| 63 | 
            +
                # Wait on this to be canceled. This is backed by a {::ConditionVariable} outside of workflows or
         | 
| 64 | 
            +
                # {Workflow.wait_condition} inside of workflows.
         | 
| 63 65 | 
             
                def wait
         | 
| 66 | 
            +
                  # If this is in a workflow, just wait for the canceled. This is because ConditionVariable does a no-duration
         | 
| 67 | 
            +
                  # kernel_sleep to the fiber scheduler which ends up recursing back into this because the workflow implementation
         | 
| 68 | 
            +
                  # of kernel_sleep by default relies on cancellation.
         | 
| 69 | 
            +
                  if Workflow.in_workflow?
         | 
| 70 | 
            +
                    Workflow.wait_condition(cancellation: nil) { @canceled }
         | 
| 71 | 
            +
                    return
         | 
| 72 | 
            +
                  end
         | 
| 73 | 
            +
             | 
| 64 74 | 
             
                  @canceled_mutex.synchronize do
         | 
| 65 75 | 
             
                    break if @canceled
         | 
| 66 76 |  | 
| 67 77 | 
             
                    # Add cond var if not present
         | 
| 68 78 | 
             
                    if @canceled_cond_var.nil?
         | 
| 69 79 | 
             
                      @canceled_cond_var = ConditionVariable.new
         | 
| 70 | 
            -
                      @cancel_callbacks. | 
| 80 | 
            +
                      @cancel_callbacks[Object.new] = proc { @canceled_mutex.synchronize { @canceled_cond_var.broadcast } }
         | 
| 71 81 | 
             
                    end
         | 
| 72 82 |  | 
| 73 83 | 
             
                    # Wait on it
         | 
| @@ -105,21 +115,29 @@ module Temporalio | |
| 105 115 | 
             
                #
         | 
| 106 116 | 
             
                # @note WARNING: This is advanced API, users should use {wait} or similar.
         | 
| 107 117 | 
             
                #
         | 
| 108 | 
            -
                # @param proc [Proc, nil] Proc to invoke, or nil to use block.
         | 
| 109 118 | 
             
                # @yield Accepts block if not using `proc`.
         | 
| 110 | 
            -
                 | 
| 111 | 
            -
             | 
| 112 | 
            -
                  raise ArgumentError, ' | 
| 113 | 
            -
                  raise ArgumentError, 'Parameter not a proc' if proc && !proc.is_a?(Proc)
         | 
| 119 | 
            +
                # @return [Object] Key that can be used with {remove_cancel_callback} or `nil`` if run immediately.
         | 
| 120 | 
            +
                def add_cancel_callback(&block)
         | 
| 121 | 
            +
                  raise ArgumentError, 'Must provide block' unless block_given?
         | 
| 114 122 |  | 
| 115 | 
            -
                  callback_to_run_immediately = @canceled_mutex.synchronize do
         | 
| 116 | 
            -
                     | 
| 117 | 
            -
                    @cancel_callbacks.push(proc || block)
         | 
| 118 | 
            -
                    break nil unless @canceled
         | 
| 123 | 
            +
                  callback_to_run_immediately, key = @canceled_mutex.synchronize do
         | 
| 124 | 
            +
                    break [block, nil] if @canceled
         | 
| 119 125 |  | 
| 120 | 
            -
                     | 
| 126 | 
            +
                    key = Object.new
         | 
| 127 | 
            +
                    @cancel_callbacks[key] = block
         | 
| 128 | 
            +
                    [nil, key]
         | 
| 121 129 | 
             
                  end
         | 
| 122 130 | 
             
                  callback_to_run_immediately&.call
         | 
| 131 | 
            +
                  key
         | 
| 132 | 
            +
                end
         | 
| 133 | 
            +
             | 
| 134 | 
            +
                # Remove a cancel callback using the key returned from {add_cancel_callback}.
         | 
| 135 | 
            +
                #
         | 
| 136 | 
            +
                # @param key [Object] Key returned from {add_cancel_callback}.
         | 
| 137 | 
            +
                def remove_cancel_callback(key)
         | 
| 138 | 
            +
                  @canceled_mutex.synchronize do
         | 
| 139 | 
            +
                    @cancel_callbacks.delete(key)
         | 
| 140 | 
            +
                  end
         | 
| 123 141 | 
             
                  nil
         | 
| 124 142 | 
             
                end
         | 
| 125 143 |  | 
| @@ -144,7 +162,9 @@ module Temporalio | |
| 144 162 |  | 
| 145 163 | 
             
                  @canceled = true
         | 
| 146 164 | 
             
                  @canceled_reason = reason
         | 
| 147 | 
            -
                  @cancel_callbacks.dup
         | 
| 165 | 
            +
                  to_return = @cancel_callbacks.dup
         | 
| 166 | 
            +
                  @cancel_callbacks.clear
         | 
| 167 | 
            +
                  to_return.values
         | 
| 148 168 | 
             
                end
         | 
| 149 169 | 
             
              end
         | 
| 150 170 | 
             
            end
         | 
| @@ -27,36 +27,24 @@ module Temporalio | |
| 27 27 | 
             
                  # Record a heartbeat for the activity.
         | 
| 28 28 | 
             
                  #
         | 
| 29 29 | 
             
                  # @param details [Array<Object>] Details of the heartbeat.
         | 
| 30 | 
            -
                  # @param  | 
| 31 | 
            -
                   | 
| 32 | 
            -
                  def heartbeat(
         | 
| 33 | 
            -
                    *details,
         | 
| 34 | 
            -
                    rpc_metadata: nil,
         | 
| 35 | 
            -
                    rpc_timeout: nil
         | 
| 36 | 
            -
                  )
         | 
| 30 | 
            +
                  # @param rpc_options [RPCOptions, nil] Advanced RPC options.
         | 
| 31 | 
            +
                  def heartbeat(*details, rpc_options: nil)
         | 
| 37 32 | 
             
                    @client._impl.heartbeat_async_activity(Interceptor::HeartbeatAsyncActivityInput.new(
         | 
| 38 33 | 
             
                                                             task_token_or_id_reference:,
         | 
| 39 34 | 
             
                                                             details:,
         | 
| 40 | 
            -
                                                              | 
| 41 | 
            -
                                                             rpc_timeout:
         | 
| 35 | 
            +
                                                             rpc_options:
         | 
| 42 36 | 
             
                                                           ))
         | 
| 43 37 | 
             
                  end
         | 
| 44 38 |  | 
| 45 39 | 
             
                  # Complete the activity.
         | 
| 46 40 | 
             
                  #
         | 
| 47 41 | 
             
                  # @param result [Object, nil] Result of the activity.
         | 
| 48 | 
            -
                  # @param  | 
| 49 | 
            -
                   | 
| 50 | 
            -
                  def complete(
         | 
| 51 | 
            -
                    result = nil,
         | 
| 52 | 
            -
                    rpc_metadata: nil,
         | 
| 53 | 
            -
                    rpc_timeout: nil
         | 
| 54 | 
            -
                  )
         | 
| 42 | 
            +
                  # @param rpc_options [RPCOptions, nil] Advanced RPC options.
         | 
| 43 | 
            +
                  def complete(result = nil, rpc_options: nil)
         | 
| 55 44 | 
             
                    @client._impl.complete_async_activity(Interceptor::CompleteAsyncActivityInput.new(
         | 
| 56 45 | 
             
                                                            task_token_or_id_reference:,
         | 
| 57 46 | 
             
                                                            result:,
         | 
| 58 | 
            -
                                                             | 
| 59 | 
            -
                                                            rpc_timeout:
         | 
| 47 | 
            +
                                                            rpc_options:
         | 
| 60 48 | 
             
                                                          ))
         | 
| 61 49 | 
             
                  end
         | 
| 62 50 |  | 
| @@ -64,39 +52,26 @@ module Temporalio | |
| 64 52 | 
             
                  #
         | 
| 65 53 | 
             
                  # @param error [Exception] Error for the activity.
         | 
| 66 54 | 
             
                  # @param last_heartbeat_details [Array<Object>] Last heartbeat details for the activity.
         | 
| 67 | 
            -
                  # @param  | 
| 68 | 
            -
                   | 
| 69 | 
            -
                  def fail(
         | 
| 70 | 
            -
                    error,
         | 
| 71 | 
            -
                    last_heartbeat_details: [],
         | 
| 72 | 
            -
                    rpc_metadata: nil,
         | 
| 73 | 
            -
                    rpc_timeout: nil
         | 
| 74 | 
            -
                  )
         | 
| 55 | 
            +
                  # @param rpc_options [RPCOptions, nil] Advanced RPC options.
         | 
| 56 | 
            +
                  def fail(error, last_heartbeat_details: [], rpc_options: nil)
         | 
| 75 57 | 
             
                    @client._impl.fail_async_activity(Interceptor::FailAsyncActivityInput.new(
         | 
| 76 58 | 
             
                                                        task_token_or_id_reference:,
         | 
| 77 59 | 
             
                                                        error:,
         | 
| 78 60 | 
             
                                                        last_heartbeat_details:,
         | 
| 79 | 
            -
                                                         | 
| 80 | 
            -
                                                        rpc_timeout:
         | 
| 61 | 
            +
                                                        rpc_options:
         | 
| 81 62 | 
             
                                                      ))
         | 
| 82 63 | 
             
                  end
         | 
| 83 64 |  | 
| 84 65 | 
             
                  # Report the activity as canceled.
         | 
| 85 66 | 
             
                  #
         | 
| 86 67 | 
             
                  # @param details [Array<Object>] Cancellation details.
         | 
| 87 | 
            -
                  # @param  | 
| 88 | 
            -
                  # @param rpc_timeout [Float, nil] Number of seconds before timeout.
         | 
| 68 | 
            +
                  # @param rpc_options [RPCOptions, nil] Advanced RPC options.
         | 
| 89 69 | 
             
                  # @raise [AsyncActivityCanceledError] If the activity has been canceled.
         | 
| 90 | 
            -
                  def report_cancellation(
         | 
| 91 | 
            -
                    *details,
         | 
| 92 | 
            -
                    rpc_metadata: nil,
         | 
| 93 | 
            -
                    rpc_timeout: nil
         | 
| 94 | 
            -
                  )
         | 
| 70 | 
            +
                  def report_cancellation(*details, rpc_options: nil)
         | 
| 95 71 | 
             
                    @client._impl.report_cancellation_async_activity(Interceptor::ReportCancellationAsyncActivityInput.new(
         | 
| 96 72 | 
             
                                                                       task_token_or_id_reference:,
         | 
| 97 73 | 
             
                                                                       details:,
         | 
| 98 | 
            -
                                                                        | 
| 99 | 
            -
                                                                       rpc_timeout:
         | 
| 74 | 
            +
                                                                       rpc_options:
         | 
| 100 75 | 
             
                                                                     ))
         | 
| 101 76 | 
             
                  end
         | 
| 102 77 |  |