temporalio 0.0.1 → 0.0.2
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/README.md +175 -4
- data/bridge/Cargo.lock +44 -21
- data/bridge/Cargo.toml +1 -0
- data/bridge/sdk-core/Cargo.toml +1 -1
- data/bridge/sdk-core/README.md +1 -4
- data/bridge/sdk-core/client/Cargo.toml +1 -1
- data/bridge/sdk-core/client/src/lib.rs +12 -20
- data/bridge/sdk-core/client/src/raw.rs +9 -8
- data/bridge/sdk-core/client/src/retry.rs +100 -23
- data/bridge/sdk-core/core/Cargo.toml +7 -7
- data/bridge/sdk-core/core/benches/workflow_replay.rs +13 -10
- data/bridge/sdk-core/core/src/abstractions.rs +22 -22
- data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +146 -43
- data/bridge/sdk-core/core/src/core_tests/local_activities.rs +419 -9
- data/bridge/sdk-core/core/src/core_tests/queries.rs +247 -89
- data/bridge/sdk-core/core/src/core_tests/workers.rs +2 -2
- data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +1 -1
- data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +47 -27
- data/bridge/sdk-core/core/src/lib.rs +139 -32
- data/bridge/sdk-core/core/src/protosext/mod.rs +1 -1
- data/bridge/sdk-core/core/src/replay/mod.rs +185 -41
- data/bridge/sdk-core/core/src/telemetry/log_export.rs +190 -0
- data/bridge/sdk-core/core/src/telemetry/metrics.rs +184 -139
- data/bridge/sdk-core/core/src/telemetry/mod.rs +310 -315
- data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +4 -3
- data/bridge/sdk-core/core/src/test_help/mod.rs +23 -9
- data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +12 -6
- data/bridge/sdk-core/core/src/worker/activities.rs +40 -23
- data/bridge/sdk-core/core/src/worker/client/mocks.rs +1 -1
- data/bridge/sdk-core/core/src/worker/client.rs +30 -4
- data/bridge/sdk-core/core/src/worker/mod.rs +23 -19
- data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +10 -19
- data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +99 -25
- data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +1 -5
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +1 -5
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +1 -5
- data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +3 -5
- data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +1 -5
- data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +2 -6
- data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +1 -5
- data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +24 -22
- data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +12 -38
- data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +178 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +1 -5
- data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +1 -5
- data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +1 -5
- data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +8 -2
- data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +1 -5
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +1 -1
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +233 -217
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +1 -6
- data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +4 -4
- data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +13 -5
- data/bridge/sdk-core/core/src/worker/workflow/mod.rs +86 -29
- data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +2 -2
- data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +56 -11
- data/bridge/sdk-core/core-api/Cargo.toml +4 -3
- data/bridge/sdk-core/core-api/src/lib.rs +1 -43
- data/bridge/sdk-core/core-api/src/telemetry.rs +147 -0
- data/bridge/sdk-core/core-api/src/worker.rs +13 -0
- data/bridge/sdk-core/etc/deps.svg +115 -140
- data/bridge/sdk-core/etc/regen-depgraph.sh +5 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +1 -1
- data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
- data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
- data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -3
- data/bridge/sdk-core/protos/api_upstream/build/go.mod +7 -0
- data/bridge/sdk-core/protos/api_upstream/build/go.sum +5 -0
- data/bridge/sdk-core/protos/api_upstream/{temporal/api/update/v1/message.proto → build/tools.go} +6 -23
- data/bridge/sdk-core/protos/api_upstream/go.mod +6 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +12 -9
- data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +20 -19
- data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +3 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +4 -4
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +3 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +5 -3
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +23 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/{cluster.proto → interaction_type.proto} +10 -11
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +2 -13
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +26 -19
- data/bridge/sdk-core/protos/api_upstream/temporal/api/interaction/v1/message.proto +87 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +21 -61
- data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +2 -21
- data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +110 -31
- data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +4 -4
- data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +3 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +60 -16
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +17 -3
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +2 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +8 -1
- data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +2 -2
- data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +2 -2
- data/bridge/sdk-core/sdk/Cargo.toml +2 -2
- data/bridge/sdk-core/sdk/src/interceptors.rs +36 -3
- data/bridge/sdk-core/sdk/src/lib.rs +7 -5
- data/bridge/sdk-core/sdk/src/workflow_context.rs +13 -2
- data/bridge/sdk-core/sdk/src/workflow_future.rs +3 -7
- data/bridge/sdk-core/sdk-core-protos/Cargo.toml +1 -1
- data/bridge/sdk-core/sdk-core-protos/build.rs +0 -1
- data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +65 -18
- data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +22 -22
- data/bridge/sdk-core/sdk-core-protos/src/lib.rs +104 -44
- data/bridge/sdk-core/test-utils/Cargo.toml +2 -1
- data/bridge/sdk-core/test-utils/src/lib.rs +81 -29
- data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +5 -2
- data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +37 -0
- data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -13
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +167 -13
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +53 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +106 -20
- data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +18 -8
- data/bridge/sdk-core/tests/main.rs +6 -4
- data/bridge/src/connection.rs +81 -62
- data/bridge/src/lib.rs +92 -33
- data/bridge/src/runtime.rs +9 -2
- data/bridge/src/worker.rs +53 -2
- data/lib/bridge.so +0 -0
- data/lib/gen/temporal/api/batch/v1/message_pb.rb +8 -6
- data/lib/gen/temporal/api/command/v1/message_pb.rb +17 -9
- data/lib/gen/temporal/api/common/v1/message_pb.rb +1 -1
- data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +2 -1
- data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +3 -1
- data/lib/gen/temporal/api/enums/v1/common_pb.rb +2 -1
- data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +3 -2
- data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +7 -1
- data/lib/gen/temporal/api/enums/v1/interaction_type_pb.rb +25 -0
- data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +1 -1
- data/lib/gen/temporal/api/enums/v1/query_pb.rb +1 -1
- data/lib/gen/temporal/api/enums/v1/reset_pb.rb +1 -1
- data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +1 -1
- data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +1 -1
- data/lib/gen/temporal/api/enums/v1/update_pb.rb +1 -6
- data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +1 -1
- data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +1 -1
- data/lib/gen/temporal/api/failure/v1/message_pb.rb +1 -1
- data/lib/gen/temporal/api/filter/v1/message_pb.rb +1 -1
- data/lib/gen/temporal/api/history/v1/message_pb.rb +19 -18
- data/lib/gen/temporal/api/interaction/v1/message_pb.rb +49 -0
- data/lib/gen/temporal/api/namespace/v1/message_pb.rb +1 -1
- data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +11 -51
- data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +1 -1
- data/lib/gen/temporal/api/query/v1/message_pb.rb +1 -1
- data/lib/gen/temporal/api/replication/v1/message_pb.rb +1 -1
- data/lib/gen/temporal/api/schedule/v1/message_pb.rb +22 -1
- data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +2 -2
- data/lib/gen/temporal/api/version/v1/message_pb.rb +1 -1
- data/lib/gen/temporal/api/workflow/v1/message_pb.rb +2 -1
- data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +27 -10
- data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +1 -1
- data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +1 -0
- data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +5 -1
- data/lib/temporalio/activity/context.rb +97 -0
- data/lib/temporalio/activity/info.rb +67 -0
- data/lib/temporalio/activity.rb +85 -0
- data/lib/temporalio/bridge/error.rb +8 -0
- data/lib/temporalio/bridge.rb +14 -0
- data/lib/{temporal → temporalio}/client/implementation.rb +49 -48
- data/lib/{temporal → temporalio}/client/workflow_handle.rb +35 -35
- data/lib/{temporal → temporalio}/client.rb +19 -32
- data/lib/{temporal → temporalio}/connection.rb +238 -223
- data/lib/{temporal → temporalio}/data_converter.rb +76 -35
- data/lib/{temporal → temporalio}/error/failure.rb +6 -6
- data/lib/{temporal → temporalio}/error/workflow_failure.rb +4 -2
- data/lib/{temporal → temporalio}/errors.rb +19 -1
- data/lib/{temporal → temporalio}/failure_converter/base.rb +5 -5
- data/lib/{temporal → temporalio}/failure_converter/basic.rb +58 -52
- data/lib/temporalio/failure_converter.rb +7 -0
- data/lib/{temporal → temporalio}/interceptor/chain.rb +2 -1
- data/lib/{temporal → temporalio}/interceptor/client.rb +22 -1
- data/lib/{temporal → temporalio}/payload_codec/base.rb +5 -5
- data/lib/{temporal → temporalio}/payload_converter/base.rb +3 -3
- data/lib/{temporal → temporalio}/payload_converter/bytes.rb +4 -3
- data/lib/{temporal → temporalio}/payload_converter/composite.rb +7 -5
- data/lib/{temporal → temporalio}/payload_converter/encoding_base.rb +4 -4
- data/lib/{temporal → temporalio}/payload_converter/json.rb +4 -3
- data/lib/{temporal → temporalio}/payload_converter/nil.rb +4 -3
- data/lib/temporalio/payload_converter.rb +14 -0
- data/lib/{temporal → temporalio}/retry_policy.rb +4 -4
- data/lib/{temporal → temporalio}/retry_state.rb +1 -1
- data/lib/temporalio/runtime.rb +25 -0
- data/lib/{temporal → temporalio}/timeout_type.rb +2 -2
- data/lib/temporalio/version.rb +3 -0
- data/lib/temporalio/worker/activity_runner.rb +92 -0
- data/lib/temporalio/worker/activity_worker.rb +138 -0
- data/lib/temporalio/worker/reactor.rb +46 -0
- data/lib/temporalio/worker/runner.rb +63 -0
- data/lib/temporalio/worker/sync_worker.rb +88 -0
- data/lib/temporalio/worker/thread_pool_executor.rb +51 -0
- data/lib/temporalio/worker.rb +198 -0
- data/lib/{temporal → temporalio}/workflow/execution_info.rb +4 -4
- data/lib/{temporal → temporalio}/workflow/execution_status.rb +1 -1
- data/lib/{temporal → temporalio}/workflow/id_reuse_policy.rb +6 -6
- data/lib/{temporal → temporalio}/workflow/query_reject_condition.rb +5 -5
- data/lib/temporalio.rb +12 -3
- data/temporalio.gemspec +7 -3
- metadata +79 -56
- data/bridge/sdk-core/bridge-ffi/Cargo.toml +0 -24
- data/bridge/sdk-core/bridge-ffi/LICENSE.txt +0 -23
- data/bridge/sdk-core/bridge-ffi/build.rs +0 -25
- data/bridge/sdk-core/bridge-ffi/include/sdk-core-bridge.h +0 -249
- data/bridge/sdk-core/bridge-ffi/src/lib.rs +0 -825
- data/bridge/sdk-core/bridge-ffi/src/wrappers.rs +0 -211
- data/bridge/sdk-core/core/src/log_export.rs +0 -62
- data/bridge/sdk-core/core/src/worker/workflow/machines/mutable_side_effect_state_machine.rs +0 -127
- data/bridge/sdk-core/core/src/worker/workflow/machines/side_effect_state_machine.rs +0 -71
- data/bridge/sdk-core/protos/api_upstream/temporal/api/cluster/v1/message.proto +0 -83
- data/bridge/sdk-core/protos/local/temporal/sdk/core/bridge/bridge.proto +0 -210
- data/bridge/sdk-core/sdk/src/conversions.rs +0 -8
- data/lib/gen/temporal/api/cluster/v1/message_pb.rb +0 -67
- data/lib/gen/temporal/api/enums/v1/cluster_pb.rb +0 -26
- data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -26
- data/lib/temporal/bridge.rb +0 -14
- data/lib/temporal/failure_converter.rb +0 -8
- data/lib/temporal/payload_converter.rb +0 -14
- data/lib/temporal/runtime.rb +0 -22
- data/lib/temporal/version.rb +0 -3
- data/lib/temporal.rb +0 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 657f0a3bde04af32d78ce4f6b58103ba1eb5e16b6b023aea02fdd8889fe7594c
|
|
4
|
+
data.tar.gz: 7b51a09196eb6dde92b54e31b1abad8cf7ce3a41f2c719de73d8341e83d5d95e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 768d7983132b8a4bc3bd359be90a621463f9abd0e3a6de51dbd13256c86e9f60f916142b3301d22082e7ffacba156b5a97666b4f189299e976bc890c224fe2bb
|
|
7
|
+
data.tar.gz: 7602428c63547f9de4da9dcbd4180d58617eae04fb5478a58fbfc16c2d7f27fda8894134ab1a7d37dfe3c79f0c67d97eabf5f2f7f50e0112f19dbcc12f32d1d3
|
data/README.md
CHANGED
|
@@ -23,12 +23,17 @@ At this point the SDK only supports the **Temporal Client** capabilities:
|
|
|
23
23
|
- gRPC access to Temporal Server
|
|
24
24
|
- Temporal Cloud is not yet supported due to the lack of TLS support, but it's coming soon
|
|
25
25
|
|
|
26
|
+
As well as **Activity Worker** capabilities:
|
|
27
|
+
|
|
28
|
+
- Definiting activities
|
|
29
|
+
- Activity heartbeats/cancellations
|
|
30
|
+
- Running activity workers
|
|
26
31
|
|
|
27
32
|
## Quick Start
|
|
28
33
|
|
|
29
34
|
### Installation
|
|
30
35
|
|
|
31
|
-
Add the [
|
|
36
|
+
Add the [temporalio gem](https://rubygems.org/gems/temporalio) to your Gemfile:
|
|
32
37
|
|
|
33
38
|
```ruby
|
|
34
39
|
gem 'temporalio'
|
|
@@ -47,10 +52,10 @@ A client can be created and used to start a workflow like so:
|
|
|
47
52
|
|
|
48
53
|
```ruby
|
|
49
54
|
# Establish a gRPC connection to the server
|
|
50
|
-
connection =
|
|
55
|
+
connection = Temporalio::Connection.new('localhost:7233')
|
|
51
56
|
|
|
52
57
|
# Initialize a Client with a namespace
|
|
53
|
-
client =
|
|
58
|
+
client = Temporalio::Client.new(connection, 'my-namespace')
|
|
54
59
|
|
|
55
60
|
# Start a workflow
|
|
56
61
|
handle = client.start_workflow('MyWorkflow', 'some input', id: 'my-id', task_queue: 'my-task-queue')
|
|
@@ -82,12 +87,178 @@ The default data converter supports converting multiple types including:
|
|
|
82
87
|
|
|
83
88
|
- `nil`
|
|
84
89
|
- bytes (`String` with `Encoding::ASCII_8BIT`)
|
|
85
|
-
- Anything that [
|
|
90
|
+
- Anything that [JSON.generate](https://ruby-doc.org/stdlib-3.0.0/libdoc/json/rdoc/JSON.html#method-i-generate)
|
|
86
91
|
supports
|
|
87
92
|
|
|
88
93
|
This notably doesn't include any `Date`, `Time`, or `DateTime` objects as they may not work across
|
|
89
94
|
different SDKs. A custom payload converter can be implemented to support these.
|
|
90
95
|
|
|
96
|
+
### Workers
|
|
97
|
+
|
|
98
|
+
Workers host workflows (coming soon) and/or activities. Here's how to run a worker:
|
|
99
|
+
|
|
100
|
+
```ruby
|
|
101
|
+
require 'temporal'
|
|
102
|
+
|
|
103
|
+
# Establish a gRPC connection to the server
|
|
104
|
+
connection = Temporal::Connection.new('localhost:7233')
|
|
105
|
+
|
|
106
|
+
# Initialize a new worker with your activities
|
|
107
|
+
worker = Temporal::Worker.new(connection, 'my-namespace', 'my-task-queue', activities: [MyActivity])
|
|
108
|
+
|
|
109
|
+
# Occupy the thread by running the worker
|
|
110
|
+
worker.run
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Some things to note about the above code:
|
|
114
|
+
|
|
115
|
+
- This creates/uses the same connection that is used for initializing a client
|
|
116
|
+
- Workers can have many more options not shown here (e.g. data converters and interceptors)
|
|
117
|
+
|
|
118
|
+
In order to have more control over running of a worker you can provide a block of code by the end of
|
|
119
|
+
which the worker will shut itself down:
|
|
120
|
+
|
|
121
|
+
```ruby
|
|
122
|
+
# Initialize worker_1, worker_2 and worker_3 as in the example above
|
|
123
|
+
|
|
124
|
+
# Run the worker for 5 seconds, then shut down
|
|
125
|
+
worker_1.run { sleep 5 }
|
|
126
|
+
|
|
127
|
+
# Or shut the worker down when a workflow completes (very useful for running specs):
|
|
128
|
+
client = Temporal::Client.new(connection, 'my-namespace')
|
|
129
|
+
handle = client.start_workflow('MyWorkflow', 'some input', id: 'my-id', task_queue: 'my-task-queue')
|
|
130
|
+
worker_2.run { handle.result }
|
|
131
|
+
|
|
132
|
+
# Or wait for some external signal to stop the worker
|
|
133
|
+
stop_queue = Queue.new
|
|
134
|
+
Signal.trap('USR1') { stop_queue.close }
|
|
135
|
+
worker_3.run { stop_queue.pop }
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
You can also shut down a running worker by calling `Temporal::Worker#shutdown` from a separate
|
|
139
|
+
thread at any time.
|
|
140
|
+
|
|
141
|
+
#### Running multiple workers
|
|
142
|
+
|
|
143
|
+
In order to run multiple workers in the same thread you can use the `Temporal::Worker.run` method:
|
|
144
|
+
|
|
145
|
+
```ruby
|
|
146
|
+
# Initialize workers
|
|
147
|
+
worker_1 = Temporal::Worker.new(connection, 'my-namespace-1', 'my-task-queue-1', activities: [MyActivity1, MyActivity2])
|
|
148
|
+
worker_2 = Temporal::Worker.new(connection, 'my-namespace-2', 'my-task-queue-1', activities: [MyActivity3])
|
|
149
|
+
worker_3 = Temporal::Worker.new(connection, 'my-namespace-1', 'my-task-queue-2', activities: [MyActivity4])
|
|
150
|
+
|
|
151
|
+
Temporal::Worker.run(worker_1, worker_2, worker_3)
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Please note that similar to `Temporal::Worker#run`, `Temporal::Worker.run` accepts a block that
|
|
155
|
+
behaves the same way — the workers will be shut down when the block finishes.
|
|
156
|
+
|
|
157
|
+
You can also configure your worker to listen on process signals to initiate a shutdown:
|
|
158
|
+
|
|
159
|
+
```ruby
|
|
160
|
+
Temporal::Worker.run(worker_1, worker_2, worker_3, shutdown_signals: %w[INT TERM])
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
#### Worker Shutdown
|
|
164
|
+
|
|
165
|
+
The `Temporal::Worker#run` (as well as `Temporal::Worker#shutdown`) invocation will wait on all
|
|
166
|
+
activities to complete, so if a long-running activity does not at least respect cancellation, the
|
|
167
|
+
shutdown may never complete.
|
|
168
|
+
|
|
169
|
+
If a worker was initialized with a `graceful_shutdown_timeout` option then a cancellation will be
|
|
170
|
+
issued for every running activity after the set timeout. The bahaviour is mostly identical to a
|
|
171
|
+
server requested cancellation and should be handled accordingly. More on this in [Heartbeating and
|
|
172
|
+
Cancellation](#heartbeating-and-cancellation).
|
|
173
|
+
|
|
174
|
+
### Activities
|
|
175
|
+
|
|
176
|
+
#### Definition
|
|
177
|
+
|
|
178
|
+
Activities are defined by subclassing `Temporal::Activity` class:
|
|
179
|
+
|
|
180
|
+
```ruby
|
|
181
|
+
class SayHelloActivity < Temporal::Activity
|
|
182
|
+
# Optionally specify a custom activity name:
|
|
183
|
+
# (The class name `SayHelloActivity` will be used by default)
|
|
184
|
+
activity_name 'say-hello'
|
|
185
|
+
|
|
186
|
+
def execute(name)
|
|
187
|
+
return "Hello, #{name}!"
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Some things to note about activity definitions:
|
|
193
|
+
|
|
194
|
+
- Long running activities should regularly heartbeat and handle cancellation
|
|
195
|
+
- Activities can only have positional arguments. Best practice is to only take a single argument
|
|
196
|
+
that is an object/dataclass of fields that can be added to as needed.
|
|
197
|
+
|
|
198
|
+
#### Activity Context
|
|
199
|
+
|
|
200
|
+
Activity classes have access to `Temporal::Activity::Context` via the `activity` method. Which
|
|
201
|
+
itself provides access to useful methods, specifically:
|
|
202
|
+
|
|
203
|
+
- `info` - Returns the immutable info of the currently running activity
|
|
204
|
+
- `heartbeat(*details)` - Record a heartbeat
|
|
205
|
+
- `cancelled?` - Whether a cancellation has been requested on this activity
|
|
206
|
+
- `shield` - Prevent cancel exception from being thrown during the provided block of code
|
|
207
|
+
|
|
208
|
+
##### Heartbeating and Cancellation
|
|
209
|
+
|
|
210
|
+
In order for a non-local activity to be notified of cancellation requests, it must call
|
|
211
|
+
`activity.heartbeat`. It is strongly recommended that all but the fastest executing activities call
|
|
212
|
+
this method regularly.
|
|
213
|
+
|
|
214
|
+
In addition to obtaining cancellation information, heartbeats also support detail data that is
|
|
215
|
+
persisted on the server for retrieval during activity retry. If an activity calls
|
|
216
|
+
`activity.heartbeat(123, 456)` and then fails and is retried, `activity.info.heartbeat_details` will
|
|
217
|
+
return an array containing `123` and `456` on the next run.
|
|
218
|
+
|
|
219
|
+
A cancellation is implemented using the `Thread#raise` method, which will raise a
|
|
220
|
+
`Temporal::Error::ActivityCancelled` during the execution of an activity. This means that your code
|
|
221
|
+
might get interrupted at any point and never complete. In order to protect critical parts of your
|
|
222
|
+
activities wrap them in `activity.shield`:
|
|
223
|
+
|
|
224
|
+
```ruby
|
|
225
|
+
class ActivityWithCriticalLogic < Temporal::Activity
|
|
226
|
+
def execute
|
|
227
|
+
activity.shield do
|
|
228
|
+
run_business_critical_logic_1
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
run_non_critical_logic
|
|
232
|
+
|
|
233
|
+
activity.shield do
|
|
234
|
+
run_business_critical_logic_2
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
This will ensure that a cancellation request received while inside the `activity.shield` block will
|
|
241
|
+
not raise an exception until that block finishes.
|
|
242
|
+
|
|
243
|
+
In case the entire activity is considered critical, you can mark it as `shielded!` and ignore
|
|
244
|
+
cancellation requests altogether:
|
|
245
|
+
|
|
246
|
+
```ruby
|
|
247
|
+
class CriticalActivity < Temporal::Activity
|
|
248
|
+
shielded!
|
|
249
|
+
|
|
250
|
+
def execute
|
|
251
|
+
...
|
|
252
|
+
end
|
|
253
|
+
end
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
For any long-running activity using this approach it is recommended to periodically check
|
|
257
|
+
`activity.cancelled?` flag and respond accordingly.
|
|
258
|
+
|
|
259
|
+
Please note that your activities can also get cancelled during a worker shutdown process ([if
|
|
260
|
+
configured accordingly](#worker-shutdown)).
|
|
261
|
+
|
|
91
262
|
|
|
92
263
|
## Dev Setup
|
|
93
264
|
|
data/bridge/Cargo.lock
CHANGED
|
@@ -163,6 +163,12 @@ version = "0.13.1"
|
|
|
163
163
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
164
164
|
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
|
|
165
165
|
|
|
166
|
+
[[package]]
|
|
167
|
+
name = "base64"
|
|
168
|
+
version = "0.20.0"
|
|
169
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
170
|
+
checksum = "0ea22880d78093b0cbe17c89f64a7d457941e65759157ec6cb31a31d652b05e5"
|
|
171
|
+
|
|
166
172
|
[[package]]
|
|
167
173
|
name = "base64ct"
|
|
168
174
|
version = "1.5.3"
|
|
@@ -197,6 +203,7 @@ dependencies = [
|
|
|
197
203
|
"temporal-sdk-core-protos",
|
|
198
204
|
"thiserror",
|
|
199
205
|
"tokio",
|
|
206
|
+
"tokio-util",
|
|
200
207
|
"tonic",
|
|
201
208
|
"url",
|
|
202
209
|
]
|
|
@@ -369,7 +376,7 @@ dependencies = [
|
|
|
369
376
|
"autocfg",
|
|
370
377
|
"cfg-if",
|
|
371
378
|
"crossbeam-utils",
|
|
372
|
-
"memoffset",
|
|
379
|
+
"memoffset 0.6.5",
|
|
373
380
|
"scopeguard",
|
|
374
381
|
]
|
|
375
382
|
|
|
@@ -452,18 +459,18 @@ dependencies = [
|
|
|
452
459
|
|
|
453
460
|
[[package]]
|
|
454
461
|
name = "derive_builder"
|
|
455
|
-
version = "0.
|
|
462
|
+
version = "0.12.0"
|
|
456
463
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
457
|
-
checksum = "
|
|
464
|
+
checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8"
|
|
458
465
|
dependencies = [
|
|
459
466
|
"derive_builder_macro",
|
|
460
467
|
]
|
|
461
468
|
|
|
462
469
|
[[package]]
|
|
463
470
|
name = "derive_builder_core"
|
|
464
|
-
version = "0.
|
|
471
|
+
version = "0.12.0"
|
|
465
472
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
466
|
-
checksum = "
|
|
473
|
+
checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f"
|
|
467
474
|
dependencies = [
|
|
468
475
|
"darling",
|
|
469
476
|
"proc-macro2",
|
|
@@ -473,9 +480,9 @@ dependencies = [
|
|
|
473
480
|
|
|
474
481
|
[[package]]
|
|
475
482
|
name = "derive_builder_macro"
|
|
476
|
-
version = "0.
|
|
483
|
+
version = "0.12.0"
|
|
477
484
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
478
|
-
checksum = "
|
|
485
|
+
checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e"
|
|
479
486
|
dependencies = [
|
|
480
487
|
"derive_builder_core",
|
|
481
488
|
"syn",
|
|
@@ -1056,6 +1063,15 @@ dependencies = [
|
|
|
1056
1063
|
"autocfg",
|
|
1057
1064
|
]
|
|
1058
1065
|
|
|
1066
|
+
[[package]]
|
|
1067
|
+
name = "memoffset"
|
|
1068
|
+
version = "0.7.1"
|
|
1069
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1070
|
+
checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
|
|
1071
|
+
dependencies = [
|
|
1072
|
+
"autocfg",
|
|
1073
|
+
]
|
|
1074
|
+
|
|
1059
1075
|
[[package]]
|
|
1060
1076
|
name = "mime"
|
|
1061
1077
|
version = "0.3.16"
|
|
@@ -1118,16 +1134,16 @@ checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
|
|
|
1118
1134
|
|
|
1119
1135
|
[[package]]
|
|
1120
1136
|
name = "nix"
|
|
1121
|
-
version = "0.
|
|
1137
|
+
version = "0.26.1"
|
|
1122
1138
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1123
|
-
checksum = "
|
|
1139
|
+
checksum = "46a58d1d356c6597d08cde02c2f09d785b09e28711837b1ed667dc652c08a694"
|
|
1124
1140
|
dependencies = [
|
|
1125
|
-
"autocfg",
|
|
1126
1141
|
"bitflags",
|
|
1127
1142
|
"cfg-if",
|
|
1128
1143
|
"libc",
|
|
1129
|
-
"memoffset",
|
|
1144
|
+
"memoffset 0.7.1",
|
|
1130
1145
|
"pin-utils",
|
|
1146
|
+
"static_assertions",
|
|
1131
1147
|
]
|
|
1132
1148
|
|
|
1133
1149
|
[[package]]
|
|
@@ -1637,7 +1653,7 @@ version = "0.11.12"
|
|
|
1637
1653
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1638
1654
|
checksum = "431949c384f4e2ae07605ccaa56d1d9d2ecdb5cadd4f9577ccfab29f2e5149fc"
|
|
1639
1655
|
dependencies = [
|
|
1640
|
-
"base64",
|
|
1656
|
+
"base64 0.13.1",
|
|
1641
1657
|
"bytes",
|
|
1642
1658
|
"encoding_rs",
|
|
1643
1659
|
"futures-core",
|
|
@@ -1688,11 +1704,11 @@ dependencies = [
|
|
|
1688
1704
|
|
|
1689
1705
|
[[package]]
|
|
1690
1706
|
name = "ringbuf"
|
|
1691
|
-
version = "0.
|
|
1707
|
+
version = "0.3.1"
|
|
1692
1708
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1693
|
-
checksum = "
|
|
1709
|
+
checksum = "89e68dd9c1d8f7bb0c664e1556b1521809bc6fa62d92bb3b813adf8611caa0eb"
|
|
1694
1710
|
dependencies = [
|
|
1695
|
-
"
|
|
1711
|
+
"crossbeam-utils",
|
|
1696
1712
|
]
|
|
1697
1713
|
|
|
1698
1714
|
[[package]]
|
|
@@ -1757,7 +1773,7 @@ version = "1.0.1"
|
|
|
1757
1773
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1758
1774
|
checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55"
|
|
1759
1775
|
dependencies = [
|
|
1760
|
-
"base64",
|
|
1776
|
+
"base64 0.13.1",
|
|
1761
1777
|
]
|
|
1762
1778
|
|
|
1763
1779
|
[[package]]
|
|
@@ -1960,6 +1976,12 @@ version = "0.5.2"
|
|
|
1960
1976
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1961
1977
|
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
|
|
1962
1978
|
|
|
1979
|
+
[[package]]
|
|
1980
|
+
name = "static_assertions"
|
|
1981
|
+
version = "1.1.0"
|
|
1982
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1983
|
+
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
|
1984
|
+
|
|
1963
1985
|
[[package]]
|
|
1964
1986
|
name = "strsim"
|
|
1965
1987
|
version = "0.10.0"
|
|
@@ -2048,7 +2070,7 @@ dependencies = [
|
|
|
2048
2070
|
"arc-swap",
|
|
2049
2071
|
"async-channel",
|
|
2050
2072
|
"async-trait",
|
|
2051
|
-
"base64",
|
|
2073
|
+
"base64 0.20.0",
|
|
2052
2074
|
"crossbeam",
|
|
2053
2075
|
"dashmap",
|
|
2054
2076
|
"derive_builder",
|
|
@@ -2105,16 +2127,17 @@ dependencies = [
|
|
|
2105
2127
|
name = "temporal-sdk-core-api"
|
|
2106
2128
|
version = "0.1.0"
|
|
2107
2129
|
dependencies = [
|
|
2108
|
-
"anyhow",
|
|
2109
2130
|
"async-trait",
|
|
2110
2131
|
"derive_builder",
|
|
2111
|
-
"log",
|
|
2112
2132
|
"opentelemetry",
|
|
2113
2133
|
"prost-types",
|
|
2134
|
+
"serde_json",
|
|
2114
2135
|
"temporal-client",
|
|
2115
2136
|
"temporal-sdk-core-protos",
|
|
2116
2137
|
"thiserror",
|
|
2117
2138
|
"tonic",
|
|
2139
|
+
"tracing-core",
|
|
2140
|
+
"url",
|
|
2118
2141
|
]
|
|
2119
2142
|
|
|
2120
2143
|
[[package]]
|
|
@@ -2122,7 +2145,7 @@ name = "temporal-sdk-core-protos"
|
|
|
2122
2145
|
version = "0.1.0"
|
|
2123
2146
|
dependencies = [
|
|
2124
2147
|
"anyhow",
|
|
2125
|
-
"base64",
|
|
2148
|
+
"base64 0.20.0",
|
|
2126
2149
|
"derive_more",
|
|
2127
2150
|
"prost",
|
|
2128
2151
|
"prost-types",
|
|
@@ -2298,7 +2321,7 @@ dependencies = [
|
|
|
2298
2321
|
"async-stream",
|
|
2299
2322
|
"async-trait",
|
|
2300
2323
|
"axum",
|
|
2301
|
-
"base64",
|
|
2324
|
+
"base64 0.13.1",
|
|
2302
2325
|
"bytes",
|
|
2303
2326
|
"futures-core",
|
|
2304
2327
|
"futures-util",
|
data/bridge/Cargo.toml
CHANGED
|
@@ -15,6 +15,7 @@ temporal-sdk-core-api = { version = "0.1.0", path = "./sdk-core/core-api" }
|
|
|
15
15
|
temporal-sdk-core-protos = { version = "0.1.0", path = "./sdk-core/sdk-core-protos" }
|
|
16
16
|
thiserror = "1.0.31"
|
|
17
17
|
tokio = "1.15"
|
|
18
|
+
tokio-util = "0.7.4"
|
|
18
19
|
tonic = "0.8"
|
|
19
20
|
url = "2.2"
|
|
20
21
|
|
data/bridge/sdk-core/Cargo.toml
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
[workspace]
|
|
2
|
-
members = ["
|
|
2
|
+
members = ["core", "client", "core-api", "fsm", "test-utils", "sdk-core-protos", "sdk"]
|
data/bridge/sdk-core/README.md
CHANGED
|
@@ -17,7 +17,6 @@ This repo is composed of multiple crates:
|
|
|
17
17
|
* temporal-sdk-core-api `./core-api` - Defines the API surface exposed by Core
|
|
18
18
|
* temporal-sdk-core `./core` - The Core implementation
|
|
19
19
|
* temporal-sdk `./sdk` - A (currently prototype) Rust SDK built on top of Core. Used for testing.
|
|
20
|
-
* temporal-sdk-core-bridge-ffi `./bridge-ffi` - C API wrapper for Core
|
|
21
20
|
* rustfsm `./fsm` - Implements a procedural macro used by core for defining state machines
|
|
22
21
|
(contains subcrates). It is temporal agnostic.
|
|
23
22
|
|
|
@@ -52,9 +51,7 @@ it for a test, insert the below snippet at the start of the test. By default, tr
|
|
|
52
51
|
to stdout in a (reasonably) pretty manner.
|
|
53
52
|
|
|
54
53
|
```rust
|
|
55
|
-
crate::telemetry::
|
|
56
|
-
let s = info_span!("Test start");
|
|
57
|
-
let _enter = s.enter();
|
|
54
|
+
crate::telemetry::test_telem_console();
|
|
58
55
|
```
|
|
59
56
|
|
|
60
57
|
The passed in options to initialization can be customized to export to an OTel collector, etc.
|
|
@@ -46,13 +46,12 @@ use temporal_sdk_core_protos::{
|
|
|
46
46
|
coresdk::{workflow_commands::QueryResult, IntoPayloadsExt},
|
|
47
47
|
grpc::health::v1::health_client::HealthClient,
|
|
48
48
|
temporal::api::{
|
|
49
|
-
command::v1::Command,
|
|
50
49
|
common::v1::{Header, Payload, Payloads, WorkflowExecution, WorkflowType},
|
|
51
50
|
enums::v1::{TaskQueueKind, WorkflowIdReusePolicy, WorkflowTaskFailedCause},
|
|
52
51
|
failure::v1::Failure,
|
|
53
52
|
operatorservice::v1::operator_service_client::OperatorServiceClient,
|
|
54
53
|
query::v1::WorkflowQuery,
|
|
55
|
-
taskqueue::v1::
|
|
54
|
+
taskqueue::v1::TaskQueue,
|
|
56
55
|
testservice::v1::test_service_client::TestServiceClient,
|
|
57
56
|
workflowservice::v1::{workflow_service_client::WorkflowServiceClient, *},
|
|
58
57
|
},
|
|
@@ -181,6 +180,17 @@ impl RetryConfig {
|
|
|
181
180
|
}
|
|
182
181
|
}
|
|
183
182
|
|
|
183
|
+
pub(crate) const fn throttle_retry_policy() -> Self {
|
|
184
|
+
Self {
|
|
185
|
+
initial_interval: Duration::from_secs(1),
|
|
186
|
+
randomization_factor: 0.2,
|
|
187
|
+
multiplier: 2.0,
|
|
188
|
+
max_interval: Duration::from_secs(10),
|
|
189
|
+
max_elapsed_time: None,
|
|
190
|
+
max_retries: 0,
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
184
194
|
pub(crate) fn into_exp_backoff<C>(self, clock: C) -> exponential::ExponentialBackoff<C> {
|
|
185
195
|
exponential::ExponentialBackoff {
|
|
186
196
|
current_interval: self.initial_interval,
|
|
@@ -362,24 +372,6 @@ impl ClientOptions {
|
|
|
362
372
|
}
|
|
363
373
|
}
|
|
364
374
|
|
|
365
|
-
/// A version of [RespondWorkflowTaskCompletedRequest] that will finish being filled out by the
|
|
366
|
-
/// server client
|
|
367
|
-
#[derive(Debug, Clone, PartialEq)]
|
|
368
|
-
pub struct WorkflowTaskCompletion {
|
|
369
|
-
/// The task token that would've been received from polling for a workflow activation
|
|
370
|
-
pub task_token: TaskToken,
|
|
371
|
-
/// A list of new commands to send to the server, such as starting a timer.
|
|
372
|
-
pub commands: Vec<Command>,
|
|
373
|
-
/// If set, indicate that next task should be queued on sticky queue with given attributes.
|
|
374
|
-
pub sticky_attributes: Option<StickyExecutionAttributes>,
|
|
375
|
-
/// Responses to queries in the `queries` field of the workflow task.
|
|
376
|
-
pub query_responses: Vec<QueryResult>,
|
|
377
|
-
/// Indicate that the task completion should return a new WFT if one is available
|
|
378
|
-
pub return_new_workflow_task: bool,
|
|
379
|
-
/// Force a new WFT to be created after this completion
|
|
380
|
-
pub force_create_new_workflow_task: bool,
|
|
381
|
-
}
|
|
382
|
-
|
|
383
375
|
/// Interceptor which attaches common metadata (like "client-name") to every outgoing call
|
|
384
376
|
#[derive(Clone)]
|
|
385
377
|
pub struct ServiceCallInterceptor {
|
|
@@ -542,6 +542,15 @@ proxier! {
|
|
|
542
542
|
r.extensions_mut().insert(labels);
|
|
543
543
|
}
|
|
544
544
|
);
|
|
545
|
+
(
|
|
546
|
+
delete_workflow_execution,
|
|
547
|
+
DeleteWorkflowExecutionRequest,
|
|
548
|
+
DeleteWorkflowExecutionResponse,
|
|
549
|
+
|r| {
|
|
550
|
+
let labels = AttachMetricLabels::namespace(r.get_ref().namespace.clone());
|
|
551
|
+
r.extensions_mut().insert(labels);
|
|
552
|
+
}
|
|
553
|
+
);
|
|
545
554
|
(
|
|
546
555
|
list_open_workflow_executions,
|
|
547
556
|
ListOpenWorkflowExecutionsRequest,
|
|
@@ -808,17 +817,9 @@ proxier! {
|
|
|
808
817
|
r.extensions_mut().insert(labels);
|
|
809
818
|
}
|
|
810
819
|
);
|
|
811
|
-
(delete_workflow_execution, DeleteWorkflowExecutionRequest, DeleteWorkflowExecutionResponse,
|
|
812
|
-
|r| {
|
|
813
|
-
let labels = AttachMetricLabels::namespace(r.get_ref().namespace.clone());
|
|
814
|
-
r.extensions_mut().insert(labels);
|
|
815
|
-
}
|
|
816
|
-
);
|
|
817
820
|
(add_or_update_remote_cluster, AddOrUpdateRemoteClusterRequest, AddOrUpdateRemoteClusterResponse);
|
|
818
821
|
(remove_remote_cluster, RemoveRemoteClusterRequest, RemoveRemoteClusterResponse);
|
|
819
|
-
(describe_cluster, DescribeClusterRequest, DescribeClusterResponse);
|
|
820
822
|
(list_clusters, ListClustersRequest, ListClustersResponse);
|
|
821
|
-
(list_cluster_members, ListClusterMembersRequest, ListClusterMembersResponse);
|
|
822
823
|
}
|
|
823
824
|
|
|
824
825
|
proxier! {
|