temporalio 0.2.0-x86_64-darwin → 0.3.0-x86_64-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
|
|