@temporalio/core-bridge 1.15.0 → 1.16.1
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.
- package/Cargo.lock +172 -70
- package/lib/native.d.ts +1 -1
- package/package.json +2 -2
- package/releases/aarch64-apple-darwin/index.node +0 -0
- package/releases/aarch64-unknown-linux-gnu/index.node +0 -0
- package/releases/x86_64-apple-darwin/index.node +0 -0
- package/releases/x86_64-pc-windows-msvc/index.node +0 -0
- package/releases/x86_64-unknown-linux-gnu/index.node +0 -0
- package/sdk-core/.github/workflows/per-pr.yml +6 -6
- package/sdk-core/AGENTS.md +41 -30
- package/sdk-core/Cargo.toml +3 -0
- package/sdk-core/README.md +15 -9
- package/sdk-core/crates/client/Cargo.toml +4 -0
- package/sdk-core/crates/client/README.md +139 -0
- package/sdk-core/crates/client/src/async_activity_handle.rs +297 -0
- package/sdk-core/crates/client/src/callback_based.rs +7 -0
- package/sdk-core/crates/client/src/errors.rs +294 -0
- package/sdk-core/crates/client/src/{raw.rs → grpc.rs} +280 -159
- package/sdk-core/crates/client/src/lib.rs +920 -1326
- package/sdk-core/crates/client/src/metrics.rs +24 -33
- package/sdk-core/crates/client/src/options_structs.rs +457 -0
- package/sdk-core/crates/client/src/replaceable.rs +5 -4
- package/sdk-core/crates/client/src/request_extensions.rs +8 -9
- package/sdk-core/crates/client/src/retry.rs +99 -54
- package/sdk-core/crates/client/src/{worker/mod.rs → worker.rs} +1 -1
- package/sdk-core/crates/client/src/workflow_handle.rs +826 -0
- package/sdk-core/crates/common/Cargo.toml +61 -2
- package/sdk-core/crates/common/build.rs +742 -12
- package/sdk-core/crates/common/protos/api_upstream/.github/workflows/ci.yml +2 -0
- package/sdk-core/crates/common/protos/api_upstream/Makefile +2 -1
- package/sdk-core/crates/common/protos/api_upstream/buf.yaml +0 -3
- package/sdk-core/crates/common/protos/api_upstream/cmd/check-path-conflicts/main.go +137 -0
- package/sdk-core/crates/common/protos/api_upstream/openapi/openapiv2.json +1166 -770
- package/sdk-core/crates/common/protos/api_upstream/openapi/openapiv3.yaml +1243 -750
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/deployment/v1/message.proto +2 -2
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/enums/v1/workflow.proto +4 -3
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/failure/v1/message.proto +1 -0
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/history/v1/message.proto +4 -0
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/namespace/v1/message.proto +6 -0
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/nexus/v1/message.proto +16 -1
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +64 -6
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +88 -33
- package/sdk-core/crates/common/protos/local/temporal/sdk/core/nexus/nexus.proto +4 -2
- package/sdk-core/crates/common/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +4 -0
- package/sdk-core/crates/common/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +5 -5
- package/sdk-core/crates/common/src/activity_definition.rs +20 -0
- package/sdk-core/crates/common/src/data_converters.rs +770 -0
- package/sdk-core/crates/common/src/envconfig.rs +5 -0
- package/sdk-core/crates/common/src/lib.rs +15 -211
- package/sdk-core/crates/common/src/payload_visitor.rs +648 -0
- package/sdk-core/crates/common/src/priority.rs +110 -0
- package/sdk-core/crates/common/src/protos/canned_histories.rs +3 -0
- package/sdk-core/crates/common/src/protos/history_builder.rs +45 -0
- package/sdk-core/crates/common/src/protos/history_info.rs +2 -0
- package/sdk-core/crates/common/src/protos/mod.rs +122 -27
- package/sdk-core/crates/common/src/protos/task_token.rs +3 -3
- package/sdk-core/crates/common/src/protos/utilities.rs +11 -0
- package/sdk-core/crates/{sdk-core → common}/src/telemetry/log_export.rs +5 -7
- package/sdk-core/crates/common/src/telemetry/metrics/core.rs +125 -0
- package/sdk-core/crates/common/src/telemetry/metrics.rs +268 -223
- package/sdk-core/crates/{sdk-core → common}/src/telemetry/otel.rs +8 -13
- package/sdk-core/crates/{sdk-core → common}/src/telemetry/prometheus_meter.rs +49 -50
- package/sdk-core/crates/{sdk-core → common}/src/telemetry/prometheus_server.rs +2 -3
- package/sdk-core/crates/common/src/telemetry.rs +264 -4
- package/sdk-core/crates/common/src/worker.rs +68 -603
- package/sdk-core/crates/common/src/workflow_definition.rs +60 -0
- package/sdk-core/crates/macros/Cargo.toml +5 -1
- package/sdk-core/crates/macros/src/activities_definitions.rs +585 -0
- package/sdk-core/crates/macros/src/fsm_impl.rs +507 -0
- package/sdk-core/crates/macros/src/lib.rs +138 -512
- package/sdk-core/crates/macros/src/macro_utils.rs +106 -0
- package/sdk-core/crates/macros/src/workflow_definitions.rs +1224 -0
- package/sdk-core/crates/sdk/Cargo.toml +19 -6
- package/sdk-core/crates/sdk/README.md +415 -0
- package/sdk-core/crates/sdk/src/activities.rs +417 -0
- package/sdk-core/crates/sdk/src/interceptors.rs +1 -1
- package/sdk-core/crates/sdk/src/lib.rs +757 -442
- package/sdk-core/crates/sdk/src/workflow_context/options.rs +45 -35
- package/sdk-core/crates/sdk/src/workflow_context.rs +1033 -289
- package/sdk-core/crates/sdk/src/workflow_future.rs +277 -213
- package/sdk-core/crates/sdk/src/workflows.rs +711 -0
- package/sdk-core/crates/sdk-core/Cargo.toml +57 -64
- package/sdk-core/crates/sdk-core/benches/workflow_replay_bench.rs +41 -35
- package/sdk-core/crates/sdk-core/machine_coverage/ActivityMachine_Coverage.puml +1 -1
- package/sdk-core/crates/sdk-core/src/abstractions.rs +6 -10
- package/sdk-core/crates/sdk-core/src/core_tests/activity_tasks.rs +6 -5
- package/sdk-core/crates/sdk-core/src/core_tests/mod.rs +13 -15
- package/sdk-core/crates/sdk-core/src/core_tests/queries.rs +21 -25
- package/sdk-core/crates/sdk-core/src/core_tests/replay_flag.rs +7 -10
- package/sdk-core/crates/sdk-core/src/core_tests/updates.rs +14 -17
- package/sdk-core/crates/sdk-core/src/core_tests/workers.rs +493 -26
- package/sdk-core/crates/sdk-core/src/core_tests/workflow_tasks.rs +4 -8
- package/sdk-core/crates/sdk-core/src/ephemeral_server/mod.rs +7 -7
- package/sdk-core/crates/sdk-core/src/histfetch.rs +20 -10
- package/sdk-core/crates/sdk-core/src/lib.rs +41 -111
- package/sdk-core/crates/sdk-core/src/pollers/mod.rs +4 -9
- package/sdk-core/crates/sdk-core/src/pollers/poll_buffer.rs +118 -19
- package/sdk-core/crates/sdk-core/src/protosext/mod.rs +2 -2
- package/sdk-core/crates/sdk-core/src/replay/mod.rs +14 -5
- package/sdk-core/crates/sdk-core/src/telemetry/metrics.rs +179 -196
- package/sdk-core/crates/sdk-core/src/telemetry/mod.rs +3 -280
- package/sdk-core/crates/sdk-core/src/test_help/integ_helpers.rs +6 -9
- package/sdk-core/crates/sdk-core/src/test_help/unit_helpers.rs +3 -6
- package/sdk-core/crates/sdk-core/src/worker/activities/local_activities.rs +11 -14
- package/sdk-core/crates/sdk-core/src/worker/activities.rs +16 -19
- package/sdk-core/crates/sdk-core/src/worker/client/mocks.rs +9 -5
- package/sdk-core/crates/sdk-core/src/worker/client.rs +103 -81
- package/sdk-core/crates/sdk-core/src/worker/heartbeat.rs +7 -11
- package/sdk-core/crates/sdk-core/src/worker/mod.rs +1124 -229
- package/sdk-core/crates/sdk-core/src/worker/nexus.rs +145 -23
- package/sdk-core/crates/sdk-core/src/worker/slot_provider.rs +2 -2
- package/sdk-core/crates/sdk-core/src/worker/tuner/fixed_size.rs +2 -2
- package/sdk-core/crates/sdk-core/src/worker/tuner/resource_based.rs +13 -13
- package/sdk-core/crates/sdk-core/src/worker/tuner.rs +28 -8
- package/sdk-core/crates/sdk-core/src/worker/workflow/driven_workflow.rs +9 -3
- package/sdk-core/crates/sdk-core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +21 -22
- package/sdk-core/crates/sdk-core/src/worker/workflow/machines/workflow_machines.rs +19 -4
- package/sdk-core/crates/sdk-core/src/worker/workflow/managed_run.rs +14 -18
- package/sdk-core/crates/sdk-core/src/worker/workflow/mod.rs +4 -6
- package/sdk-core/crates/sdk-core/src/worker/workflow/run_cache.rs +4 -7
- package/sdk-core/crates/sdk-core/src/worker/workflow/wft_extraction.rs +2 -4
- package/sdk-core/crates/sdk-core/src/worker/workflow/wft_poller.rs +8 -9
- package/sdk-core/crates/sdk-core/src/worker/workflow/workflow_stream.rs +1 -3
- package/sdk-core/crates/sdk-core/tests/activities_procmacro.rs +6 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/basic_pass.rs +54 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/invalid_self_type_fail.rs +18 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/invalid_self_type_fail.stderr +5 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/missing_context_fail.rs +14 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/missing_context_fail.stderr +5 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/multi_arg_pass.rs +48 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/no_input_pass.rs +14 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/no_return_type_pass.rs +19 -0
- package/sdk-core/crates/sdk-core/tests/cloud_tests.rs +14 -5
- package/sdk-core/crates/sdk-core/tests/common/activity_functions.rs +55 -0
- package/sdk-core/crates/sdk-core/tests/common/mod.rs +241 -196
- package/sdk-core/crates/sdk-core/tests/common/workflows.rs +41 -28
- package/sdk-core/crates/sdk-core/tests/global_metric_tests.rs +3 -5
- package/sdk-core/crates/sdk-core/tests/heavy_tests/fuzzy_workflow.rs +73 -64
- package/sdk-core/crates/sdk-core/tests/heavy_tests.rs +298 -252
- package/sdk-core/crates/sdk-core/tests/integ_tests/async_activity_client_tests.rs +230 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/client_tests.rs +94 -57
- package/sdk-core/crates/sdk-core/tests/integ_tests/data_converter_tests.rs +381 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +16 -12
- package/sdk-core/crates/sdk-core/tests/integ_tests/heartbeat_tests.rs +48 -40
- package/sdk-core/crates/sdk-core/tests/integ_tests/metrics_tests.rs +327 -255
- package/sdk-core/crates/sdk-core/tests/integ_tests/pagination_tests.rs +50 -45
- package/sdk-core/crates/sdk-core/tests/integ_tests/polling_tests.rs +147 -126
- package/sdk-core/crates/sdk-core/tests/integ_tests/queries_tests.rs +103 -89
- package/sdk-core/crates/sdk-core/tests/integ_tests/update_tests.rs +609 -453
- package/sdk-core/crates/sdk-core/tests/integ_tests/visibility_tests.rs +80 -62
- package/sdk-core/crates/sdk-core/tests/integ_tests/worker_heartbeat_tests.rs +360 -231
- package/sdk-core/crates/sdk-core/tests/integ_tests/worker_tests.rs +248 -185
- package/sdk-core/crates/sdk-core/tests/integ_tests/worker_versioning_tests.rs +52 -43
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_client_tests.rs +180 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/activities.rs +428 -315
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +82 -56
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +56 -28
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +364 -243
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/client_interactions.rs +552 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +101 -42
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +243 -147
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/eager.rs +98 -28
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +1475 -1036
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +73 -41
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/nexus.rs +397 -238
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/patches.rs +414 -189
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/queries.rs +415 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/replay.rs +96 -36
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/resets.rs +154 -137
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/signals.rs +183 -105
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +85 -38
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/timers.rs +142 -40
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +73 -54
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests.rs +363 -226
- package/sdk-core/crates/sdk-core/tests/main.rs +17 -15
- package/sdk-core/crates/sdk-core/tests/manual_tests.rs +207 -152
- package/sdk-core/crates/sdk-core/tests/shared_tests/mod.rs +65 -34
- package/sdk-core/crates/sdk-core/tests/shared_tests/priority.rs +107 -84
- package/sdk-core/crates/sdk-core/tests/workflows_procmacro.rs +6 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/async_query_fail.rs +26 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/async_query_fail.stderr +5 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/basic_pass.rs +49 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/minimal_pass.rs +21 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/mut_query_fail.rs +26 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/mut_query_fail.stderr +5 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/sync_run_fail.rs +21 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/sync_run_fail.stderr +5 -0
- package/sdk-core/crates/sdk-core-c-bridge/Cargo.toml +7 -1
- package/sdk-core/crates/sdk-core-c-bridge/include/temporal-sdk-core-c-bridge.h +14 -14
- package/sdk-core/crates/sdk-core-c-bridge/src/client.rs +83 -74
- package/sdk-core/crates/sdk-core-c-bridge/src/metric.rs +9 -14
- package/sdk-core/crates/sdk-core-c-bridge/src/runtime.rs +1 -2
- package/sdk-core/crates/sdk-core-c-bridge/src/tests/context.rs +13 -13
- package/sdk-core/crates/sdk-core-c-bridge/src/tests/mod.rs +6 -6
- package/sdk-core/crates/sdk-core-c-bridge/src/tests/utils.rs +3 -4
- package/sdk-core/crates/sdk-core-c-bridge/src/worker.rs +62 -75
- package/sdk-core/rustfmt.toml +2 -1
- package/src/client.rs +205 -318
- package/src/metrics.rs +22 -30
- package/src/runtime.rs +4 -5
- package/src/worker.rs +16 -19
- package/ts/native.ts +1 -1
- package/sdk-core/crates/client/src/workflow_handle/mod.rs +0 -212
- package/sdk-core/crates/common/src/errors.rs +0 -85
- package/sdk-core/crates/common/tests/worker_task_types_test.rs +0 -129
- package/sdk-core/crates/sdk/src/activity_context.rs +0 -238
- package/sdk-core/crates/sdk/src/app_data.rs +0 -37
- package/sdk-core/crates/sdk-core/tests/integ_tests/activity_functions.rs +0 -5
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
package/src/metrics.rs
CHANGED
|
@@ -5,18 +5,15 @@ use std::sync::Arc;
|
|
|
5
5
|
use neon::prelude::*;
|
|
6
6
|
use serde::Deserialize;
|
|
7
7
|
|
|
8
|
-
use temporalio_common::telemetry::metrics::{
|
|
9
|
-
BufferInstrumentRef as CoreBufferInstrumentRef,
|
|
10
|
-
|
|
11
|
-
MetricEvent as CoreMetricEvent, MetricKind as CoreMetricKind,
|
|
12
|
-
MetricParameters as CoreMetricParameters, NewAttributes, TemporalMeter,
|
|
8
|
+
use temporalio_common::telemetry::metrics::core::{
|
|
9
|
+
BufferInstrumentRef as CoreBufferInstrumentRef, CustomMetricAttributes, MetricCallBufferer,
|
|
10
|
+
MetricEvent as CoreMetricEvent, MetricKind as CoreMetricKind, MetricUpdateVal,
|
|
13
11
|
};
|
|
14
12
|
use temporalio_common::telemetry::metrics::{
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
metrics::{MetricKeyValue as CoreMetricKeyValue, MetricValue as CoreMetricValue},
|
|
13
|
+
Counter as CoreCounter, Gauge as CoreGauge, GaugeF64 as CoreGaugeF64,
|
|
14
|
+
Histogram as CoreHistogram, HistogramF64 as CoreHistogramF64,
|
|
15
|
+
MetricKeyValue as CoreMetricKeyValue, MetricParameters as CoreMetricParameters,
|
|
16
|
+
MetricValue as CoreMetricValue, NewAttributes, TemporalMeter,
|
|
20
17
|
};
|
|
21
18
|
|
|
22
19
|
use bridge_macros::{TryIntoJs, js_function};
|
|
@@ -126,7 +123,7 @@ pub fn new_metric_counter(
|
|
|
126
123
|
"Failed to get metric meter".into(),
|
|
127
124
|
))?;
|
|
128
125
|
|
|
129
|
-
let counter = meter.
|
|
126
|
+
let counter = meter.counter(
|
|
130
127
|
CoreMetricParameters::builder()
|
|
131
128
|
.name(name)
|
|
132
129
|
.unit(unit)
|
|
@@ -152,7 +149,7 @@ pub fn new_metric_histogram(
|
|
|
152
149
|
"Failed to get metric meter".into(),
|
|
153
150
|
))?;
|
|
154
151
|
|
|
155
|
-
let histogram = meter.
|
|
152
|
+
let histogram = meter.histogram(
|
|
156
153
|
CoreMetricParameters::builder()
|
|
157
154
|
.name(name)
|
|
158
155
|
.unit(unit)
|
|
@@ -178,7 +175,7 @@ pub fn new_metric_histogram_f64(
|
|
|
178
175
|
"Failed to get metric meter".into(),
|
|
179
176
|
))?;
|
|
180
177
|
|
|
181
|
-
let histogram = meter.
|
|
178
|
+
let histogram = meter.histogram_f64(
|
|
182
179
|
CoreMetricParameters::builder()
|
|
183
180
|
.name(name)
|
|
184
181
|
.unit(unit)
|
|
@@ -204,7 +201,7 @@ pub fn new_metric_gauge(
|
|
|
204
201
|
"Failed to get metric meter".into(),
|
|
205
202
|
))?;
|
|
206
203
|
|
|
207
|
-
let gauge = meter.
|
|
204
|
+
let gauge = meter.gauge(
|
|
208
205
|
CoreMetricParameters::builder()
|
|
209
206
|
.name(name)
|
|
210
207
|
.unit(unit)
|
|
@@ -230,7 +227,7 @@ pub fn new_metric_gauge_f64(
|
|
|
230
227
|
"Failed to get metric meter".into(),
|
|
231
228
|
))?;
|
|
232
229
|
|
|
233
|
-
let gauge = meter.
|
|
230
|
+
let gauge = meter.gauge_f64(
|
|
234
231
|
CoreMetricParameters::builder()
|
|
235
232
|
.name(name)
|
|
236
233
|
.unit(unit)
|
|
@@ -254,7 +251,6 @@ pub fn add_metric_counter_value(
|
|
|
254
251
|
|
|
255
252
|
let attributes = counter_handle
|
|
256
253
|
.meter
|
|
257
|
-
.inner
|
|
258
254
|
.new_attributes(parse_metric_attributes(attributes.value));
|
|
259
255
|
|
|
260
256
|
counter_handle.counter.add(value as u64, &attributes);
|
|
@@ -270,7 +266,6 @@ pub fn record_metric_histogram_value(
|
|
|
270
266
|
let histogram_handle = histogram_handle.borrow()?;
|
|
271
267
|
let attributes = histogram_handle
|
|
272
268
|
.meter
|
|
273
|
-
.inner
|
|
274
269
|
.new_attributes(parse_metric_attributes(attributes.value));
|
|
275
270
|
histogram_handle.histogram.record(value, &attributes);
|
|
276
271
|
Ok(())
|
|
@@ -285,7 +280,6 @@ pub fn record_metric_histogram_f64_value(
|
|
|
285
280
|
let histogram_handle = histogram_handle.borrow()?;
|
|
286
281
|
let attributes = histogram_handle
|
|
287
282
|
.meter
|
|
288
|
-
.inner
|
|
289
283
|
.new_attributes(parse_metric_attributes(attributes.value));
|
|
290
284
|
histogram_handle.histogram.record(value, &attributes);
|
|
291
285
|
Ok(())
|
|
@@ -300,7 +294,6 @@ pub fn set_metric_gauge_value(
|
|
|
300
294
|
let gauge_handle = gauge_handle.borrow()?;
|
|
301
295
|
let attributes = gauge_handle
|
|
302
296
|
.meter
|
|
303
|
-
.inner
|
|
304
297
|
.new_attributes(parse_metric_attributes(attributes.value));
|
|
305
298
|
gauge_handle.gauge.record(value, &attributes);
|
|
306
299
|
Ok(())
|
|
@@ -315,7 +308,6 @@ pub fn set_metric_gauge_f64_value(
|
|
|
315
308
|
let gauge_handle = gauge_handle.borrow()?;
|
|
316
309
|
let attributes = gauge_handle
|
|
317
310
|
.meter
|
|
318
|
-
.inner
|
|
319
311
|
.new_attributes(parse_metric_attributes(attributes.value));
|
|
320
312
|
gauge_handle.gauge.record(value, &attributes);
|
|
321
313
|
Ok(())
|
|
@@ -400,14 +392,14 @@ impl MetricsCallBuffer {
|
|
|
400
392
|
metric: instrument.get().as_ref().clone(),
|
|
401
393
|
#[allow(clippy::match_same_arms, clippy::cast_precision_loss)]
|
|
402
394
|
value: match update {
|
|
403
|
-
|
|
395
|
+
MetricUpdateVal::Duration(v) if self.use_seconds_for_durations => {
|
|
404
396
|
v.as_secs_f64()
|
|
405
397
|
}
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
398
|
+
MetricUpdateVal::Duration(v) => v.as_millis() as f64,
|
|
399
|
+
MetricUpdateVal::Delta(v) => *v as f64,
|
|
400
|
+
MetricUpdateVal::DeltaF64(v) => *v,
|
|
401
|
+
MetricUpdateVal::Value(v) => *v as f64,
|
|
402
|
+
MetricUpdateVal::ValueF64(v) => *v,
|
|
411
403
|
},
|
|
412
404
|
attributes: attributes
|
|
413
405
|
.get()
|
|
@@ -508,10 +500,10 @@ impl TryIntoJs for BufferedMetricAttributes {
|
|
|
508
500
|
let k = kv.key.as_str();
|
|
509
501
|
#[allow(clippy::cast_precision_loss)]
|
|
510
502
|
match &kv.value {
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
503
|
+
CoreMetricValue::String(v) => object.set_property_from(cx, k, v.as_str()),
|
|
504
|
+
CoreMetricValue::Int(v) => object.set_property_from(cx, k, *v as f64),
|
|
505
|
+
CoreMetricValue::Float(v) => object.set_property_from(cx, k, *v),
|
|
506
|
+
CoreMetricValue::Bool(v) => object.set_property_from(cx, k, *v),
|
|
515
507
|
}?;
|
|
516
508
|
}
|
|
517
509
|
|
package/src/runtime.rs
CHANGED
|
@@ -9,10 +9,8 @@ use temporalio_common::telemetry::{
|
|
|
9
9
|
CoreLog, OtelCollectorOptions as CoreOtelCollectorOptions,
|
|
10
10
|
PrometheusExporterOptions as CorePrometheusExporterOptions, metrics::CoreMeter,
|
|
11
11
|
};
|
|
12
|
-
use
|
|
13
|
-
|
|
14
|
-
telemetry::{build_otlp_metric_exporter, start_prometheus_metric_exporter},
|
|
15
|
-
};
|
|
12
|
+
use temporalio_common::telemetry::{build_otlp_metric_exporter, start_prometheus_metric_exporter};
|
|
13
|
+
use temporalio_sdk_core::{CoreRuntime, TokioRuntimeBuilder};
|
|
16
14
|
|
|
17
15
|
use bridge_macros::js_function;
|
|
18
16
|
use tokio_stream::StreamExt as _;
|
|
@@ -287,13 +285,14 @@ mod config {
|
|
|
287
285
|
use std::{collections::HashMap, net::SocketAddr, sync::Arc, time::Duration};
|
|
288
286
|
|
|
289
287
|
use neon::prelude::*;
|
|
288
|
+
use temporalio_common::telemetry::CoreLogStreamConsumer;
|
|
290
289
|
use temporalio_common::telemetry::{
|
|
291
290
|
HistogramBucketOverrides, Logger as CoreTelemetryLogger, MetricTemporality,
|
|
292
291
|
OtelCollectorOptions as CoreOtelCollectorOptions, OtlpProtocol,
|
|
293
292
|
PrometheusExporterOptions as CorePrometheusExporterOptions,
|
|
294
293
|
TelemetryOptions as CoreTelemetryOptions,
|
|
295
294
|
};
|
|
296
|
-
use temporalio_sdk_core::
|
|
295
|
+
use temporalio_sdk_core::Url;
|
|
297
296
|
|
|
298
297
|
use bridge_macros::TryFromJs;
|
|
299
298
|
|
package/src/worker.rs
CHANGED
|
@@ -6,10 +6,6 @@ use prost::Message;
|
|
|
6
6
|
use tokio::sync::mpsc::{Sender, channel};
|
|
7
7
|
use tokio_stream::wrappers::ReceiverStream;
|
|
8
8
|
|
|
9
|
-
use temporalio_common::Worker as CoreWorkerTrait;
|
|
10
|
-
use temporalio_common::errors::{
|
|
11
|
-
CompleteActivityError, CompleteNexusError, CompleteWfError, PollError,
|
|
12
|
-
};
|
|
13
9
|
use temporalio_common::protos::{
|
|
14
10
|
coresdk::{
|
|
15
11
|
ActivityHeartbeat, ActivityTaskCompletion, nexus::NexusTaskCompletion,
|
|
@@ -17,6 +13,7 @@ use temporalio_common::protos::{
|
|
|
17
13
|
},
|
|
18
14
|
temporal::api::history::v1::History,
|
|
19
15
|
};
|
|
16
|
+
use temporalio_sdk_core::{CompleteActivityError, CompleteNexusError, CompleteWfError, PollError};
|
|
20
17
|
use temporalio_sdk_core::{
|
|
21
18
|
CoreRuntime, init_replay_worker, init_worker,
|
|
22
19
|
replay::{HistoryForReplay, ReplayWorkerInput},
|
|
@@ -82,11 +79,12 @@ pub fn worker_new(
|
|
|
82
79
|
let config = worker_options.into_core_config()?;
|
|
83
80
|
|
|
84
81
|
let client_ref = client.borrow()?;
|
|
85
|
-
let
|
|
82
|
+
let connection = client_ref.core_connection.clone();
|
|
86
83
|
let runtime = client_ref.core_runtime.clone();
|
|
87
84
|
|
|
88
85
|
enter_sync!(runtime);
|
|
89
|
-
let worker =
|
|
86
|
+
let worker =
|
|
87
|
+
init_worker(&runtime, config, connection).context("Failed to initialize worker")?;
|
|
90
88
|
|
|
91
89
|
Ok(OpaqueOutboundHandle::new(Worker {
|
|
92
90
|
core_runtime: runtime,
|
|
@@ -120,13 +118,13 @@ pub fn worker_replace_client(
|
|
|
120
118
|
) -> BridgeResult<()> {
|
|
121
119
|
let worker_ref = worker.borrow()?;
|
|
122
120
|
let client_ref = client.borrow()?;
|
|
123
|
-
let
|
|
121
|
+
let new_connection = client_ref.core_connection.clone();
|
|
124
122
|
let runtime = worker_ref.core_runtime.clone();
|
|
125
123
|
|
|
126
124
|
enter_sync!(runtime);
|
|
127
125
|
worker_ref
|
|
128
126
|
.core_worker
|
|
129
|
-
.replace_client(
|
|
127
|
+
.replace_client(new_connection)
|
|
130
128
|
.map_err(|err| BridgeError::UnexpectedError(err.to_string()))?;
|
|
131
129
|
|
|
132
130
|
Ok(())
|
|
@@ -494,14 +492,14 @@ mod config {
|
|
|
494
492
|
use temporalio_common::protos::temporal::api::enums::v1::VersioningBehavior as CoreVersioningBehavior;
|
|
495
493
|
use temporalio_common::protos::temporal::api::worker::v1::PluginInfo;
|
|
496
494
|
use temporalio_common::worker::{
|
|
497
|
-
ActivitySlotKind, LocalActivitySlotKind, NexusSlotKind,
|
|
498
|
-
PollerBehavior as CorePollerBehavior, SlotKind, WorkerConfig,
|
|
499
495
|
WorkerDeploymentOptions as CoreWorkerDeploymentOptions,
|
|
500
|
-
WorkerDeploymentVersion as CoreWorkerDeploymentVersion,
|
|
496
|
+
WorkerDeploymentVersion as CoreWorkerDeploymentVersion,
|
|
501
497
|
};
|
|
502
498
|
use temporalio_sdk_core::{
|
|
503
|
-
|
|
504
|
-
|
|
499
|
+
ActivitySlotKind, LocalActivitySlotKind, NexusSlotKind,
|
|
500
|
+
PollerBehavior as CorePollerBehavior, ResourceBasedSlotsOptions, ResourceSlotOptions,
|
|
501
|
+
SlotKind, SlotSupplierOptions as CoreSlotSupplierOptions, TunerHolder, TunerHolderOptions,
|
|
502
|
+
WorkerConfig, WorkerVersioningStrategy, WorkflowSlotKind,
|
|
505
503
|
};
|
|
506
504
|
|
|
507
505
|
use super::custom_slot_supplier::CustomSlotSupplierOptions;
|
|
@@ -511,7 +509,6 @@ mod config {
|
|
|
511
509
|
use neon::object::Object;
|
|
512
510
|
use neon::prelude::JsResult;
|
|
513
511
|
use neon::types::JsObject;
|
|
514
|
-
use temporalio_common::worker::WorkerVersioningStrategy;
|
|
515
512
|
|
|
516
513
|
#[derive(TryFromJs)]
|
|
517
514
|
pub struct BridgeWorkerOptions {
|
|
@@ -553,7 +550,7 @@ mod config {
|
|
|
553
550
|
pub struct WorkerDeploymentOptions {
|
|
554
551
|
version: WorkerDeploymentVersion,
|
|
555
552
|
use_worker_versioning: bool,
|
|
556
|
-
default_versioning_behavior: VersioningBehavior
|
|
553
|
+
default_versioning_behavior: Option<VersioningBehavior>,
|
|
557
554
|
}
|
|
558
555
|
|
|
559
556
|
#[derive(TryFromJs)]
|
|
@@ -662,7 +659,7 @@ mod config {
|
|
|
662
659
|
Self {
|
|
663
660
|
version: val.version.into(),
|
|
664
661
|
use_worker_versioning: val.use_worker_versioning,
|
|
665
|
-
default_versioning_behavior:
|
|
662
|
+
default_versioning_behavior: val.default_versioning_behavior.map(Into::into),
|
|
666
663
|
}
|
|
667
664
|
}
|
|
668
665
|
}
|
|
@@ -806,14 +803,14 @@ mod custom_slot_supplier {
|
|
|
806
803
|
|
|
807
804
|
use neon::{context::Context, handle::Handle, prelude::*};
|
|
808
805
|
|
|
809
|
-
use
|
|
806
|
+
use temporalio_sdk_core::{
|
|
810
807
|
SlotInfo as CoreSlotInfo, SlotInfoTrait as _, SlotKind, SlotKindType as CoreSlotKindType,
|
|
811
808
|
SlotMarkUsedContext as CoreSlotMarkUsedContext,
|
|
812
809
|
SlotReleaseContext as CoreSlotReleaseContext,
|
|
813
810
|
SlotReservationContext as CoreSlotReservationContext, SlotSupplier as CoreSlotSupplier,
|
|
811
|
+
SlotSupplierOptions as CoreSlotSupplierOptions,
|
|
814
812
|
SlotSupplierPermit as CoreSlotSupplierPermit,
|
|
815
813
|
};
|
|
816
|
-
use temporalio_sdk_core::SlotSupplierOptions as CoreSlotSupplierOptions;
|
|
817
814
|
|
|
818
815
|
use bridge_macros::{TryFromJs, TryIntoJs};
|
|
819
816
|
use tracing::warn;
|
|
@@ -871,7 +868,7 @@ mod custom_slot_supplier {
|
|
|
871
868
|
}
|
|
872
869
|
Err(err) => {
|
|
873
870
|
warn!("Error reserving slot: {err:?}");
|
|
874
|
-
tokio::time::sleep(std::time::Duration::
|
|
871
|
+
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
|
|
875
872
|
}
|
|
876
873
|
}
|
|
877
874
|
}
|
package/ts/native.ts
CHANGED
|
@@ -257,7 +257,7 @@ export type PollerBehavior =
|
|
|
257
257
|
export type WorkerDeploymentOptions = {
|
|
258
258
|
version: WorkerDeploymentVersion;
|
|
259
259
|
useWorkerVersioning: boolean;
|
|
260
|
-
defaultVersioningBehavior: VersioningBehavior
|
|
260
|
+
defaultVersioningBehavior: Option<VersioningBehavior>;
|
|
261
261
|
};
|
|
262
262
|
|
|
263
263
|
export type WorkerDeploymentVersion = {
|
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
use crate::WorkflowService;
|
|
2
|
-
use anyhow::{anyhow, bail};
|
|
3
|
-
use std::{fmt::Debug, marker::PhantomData};
|
|
4
|
-
use temporalio_common::protos::{
|
|
5
|
-
coresdk::FromPayloadsExt,
|
|
6
|
-
temporal::api::{
|
|
7
|
-
common::v1::{Payload, WorkflowExecution},
|
|
8
|
-
enums::v1::HistoryEventFilterType,
|
|
9
|
-
failure::v1::Failure,
|
|
10
|
-
history::v1::history_event::Attributes,
|
|
11
|
-
workflowservice::v1::GetWorkflowExecutionHistoryRequest,
|
|
12
|
-
},
|
|
13
|
-
};
|
|
14
|
-
use tonic::IntoRequest;
|
|
15
|
-
|
|
16
|
-
/// Enumerates terminal states for a particular workflow execution
|
|
17
|
-
// TODO: Add non-proto failure types, flesh out details, etc.
|
|
18
|
-
#[derive(Debug)]
|
|
19
|
-
#[allow(clippy::large_enum_variant)]
|
|
20
|
-
pub enum WorkflowExecutionResult<T> {
|
|
21
|
-
/// The workflow finished successfully
|
|
22
|
-
Succeeded(T),
|
|
23
|
-
/// The workflow finished in failure
|
|
24
|
-
Failed(Failure),
|
|
25
|
-
/// The workflow was cancelled
|
|
26
|
-
Cancelled(Vec<Payload>),
|
|
27
|
-
/// The workflow was terminated
|
|
28
|
-
Terminated(Vec<Payload>),
|
|
29
|
-
/// The workflow timed out
|
|
30
|
-
TimedOut,
|
|
31
|
-
/// The workflow continued as new
|
|
32
|
-
ContinuedAsNew,
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
impl<T> WorkflowExecutionResult<T>
|
|
36
|
-
where
|
|
37
|
-
T: Debug,
|
|
38
|
-
{
|
|
39
|
-
/// Unwrap the result, panicking if it was not a success
|
|
40
|
-
pub fn unwrap_success(self) -> T {
|
|
41
|
-
match self {
|
|
42
|
-
Self::Succeeded(t) => t,
|
|
43
|
-
o => panic!("Expected success, got {o:?}"),
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/// Options for fetching workflow results
|
|
49
|
-
#[derive(Debug, Clone, Copy)]
|
|
50
|
-
pub struct GetWorkflowResultOptions {
|
|
51
|
-
/// If true (the default), follows to the next workflow run in the execution chain while
|
|
52
|
-
/// retrieving results.
|
|
53
|
-
pub follow_runs: bool,
|
|
54
|
-
}
|
|
55
|
-
impl Default for GetWorkflowResultOptions {
|
|
56
|
-
fn default() -> Self {
|
|
57
|
-
Self { follow_runs: true }
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/// A workflow handle which can refer to a specific workflow run, or a chain of workflow runs with
|
|
62
|
-
/// the same workflow id.
|
|
63
|
-
pub struct WorkflowHandle<ClientT, ResultT> {
|
|
64
|
-
client: ClientT,
|
|
65
|
-
info: WorkflowExecutionInfo,
|
|
66
|
-
|
|
67
|
-
_res_type: PhantomData<ResultT>,
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/// Holds needed information to refer to a specific workflow run, or workflow execution chain
|
|
71
|
-
#[derive(Debug)]
|
|
72
|
-
pub struct WorkflowExecutionInfo {
|
|
73
|
-
/// Namespace the workflow lives in
|
|
74
|
-
pub namespace: String,
|
|
75
|
-
/// The workflow's id
|
|
76
|
-
pub workflow_id: String,
|
|
77
|
-
/// If set, target this specific run of the workflow
|
|
78
|
-
pub run_id: Option<String>,
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
impl WorkflowExecutionInfo {
|
|
82
|
-
/// Bind the workflow info to a specific client, turning it into a workflow handle
|
|
83
|
-
pub fn bind_untyped<CT>(self, client: CT) -> UntypedWorkflowHandle<CT>
|
|
84
|
-
where
|
|
85
|
-
CT: WorkflowService + Clone,
|
|
86
|
-
{
|
|
87
|
-
UntypedWorkflowHandle::new(client, self)
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/// A workflow handle to a workflow with unknown types. Uses raw payloads.
|
|
92
|
-
pub(crate) type UntypedWorkflowHandle<CT> = WorkflowHandle<CT, Vec<Payload>>;
|
|
93
|
-
|
|
94
|
-
impl<CT, RT> WorkflowHandle<CT, RT>
|
|
95
|
-
where
|
|
96
|
-
CT: WorkflowService + Clone,
|
|
97
|
-
// TODO: Make more generic, capable of (de)serialization w/ serde
|
|
98
|
-
RT: FromPayloadsExt,
|
|
99
|
-
{
|
|
100
|
-
pub(crate) fn new(client: CT, info: WorkflowExecutionInfo) -> Self {
|
|
101
|
-
Self {
|
|
102
|
-
client,
|
|
103
|
-
info,
|
|
104
|
-
_res_type: PhantomData::<RT>,
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/// Get the workflow execution info
|
|
109
|
-
pub fn info(&self) -> &WorkflowExecutionInfo {
|
|
110
|
-
&self.info
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/// Get the client attached to this handle
|
|
114
|
-
pub fn client(&self) -> &CT {
|
|
115
|
-
&self.client
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/// Await the result of the workflow execution
|
|
119
|
-
pub async fn get_workflow_result(
|
|
120
|
-
&self,
|
|
121
|
-
opts: GetWorkflowResultOptions,
|
|
122
|
-
) -> Result<WorkflowExecutionResult<RT>, anyhow::Error> {
|
|
123
|
-
let mut next_page_tok = vec![];
|
|
124
|
-
let mut run_id = self.info.run_id.clone().unwrap_or_default();
|
|
125
|
-
loop {
|
|
126
|
-
let server_res = self
|
|
127
|
-
.client
|
|
128
|
-
.clone()
|
|
129
|
-
.get_workflow_execution_history(
|
|
130
|
-
GetWorkflowExecutionHistoryRequest {
|
|
131
|
-
namespace: self.info.namespace.to_string(),
|
|
132
|
-
execution: Some(WorkflowExecution {
|
|
133
|
-
workflow_id: self.info.workflow_id.clone(),
|
|
134
|
-
run_id: run_id.clone(),
|
|
135
|
-
}),
|
|
136
|
-
skip_archival: true,
|
|
137
|
-
wait_new_event: true,
|
|
138
|
-
history_event_filter_type: HistoryEventFilterType::CloseEvent as i32,
|
|
139
|
-
next_page_token: next_page_tok.clone(),
|
|
140
|
-
..Default::default()
|
|
141
|
-
}
|
|
142
|
-
.into_request(),
|
|
143
|
-
)
|
|
144
|
-
.await?
|
|
145
|
-
.into_inner();
|
|
146
|
-
|
|
147
|
-
let mut history = server_res
|
|
148
|
-
.history
|
|
149
|
-
.ok_or_else(|| anyhow!("Server returned an empty history!"))?;
|
|
150
|
-
|
|
151
|
-
if history.events.is_empty() {
|
|
152
|
-
next_page_tok = server_res.next_page_token;
|
|
153
|
-
continue;
|
|
154
|
-
}
|
|
155
|
-
// If page token was previously set, clear it.
|
|
156
|
-
next_page_tok = vec![];
|
|
157
|
-
|
|
158
|
-
let event_attrs = history.events.pop().and_then(|ev| ev.attributes);
|
|
159
|
-
|
|
160
|
-
macro_rules! follow {
|
|
161
|
-
($attrs:ident) => {
|
|
162
|
-
if opts.follow_runs && $attrs.new_execution_run_id != "" {
|
|
163
|
-
run_id = $attrs.new_execution_run_id;
|
|
164
|
-
continue;
|
|
165
|
-
}
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
break match event_attrs {
|
|
170
|
-
Some(Attributes::WorkflowExecutionCompletedEventAttributes(attrs)) => {
|
|
171
|
-
follow!(attrs);
|
|
172
|
-
Ok(WorkflowExecutionResult::Succeeded(RT::from_payloads(
|
|
173
|
-
attrs.result,
|
|
174
|
-
)))
|
|
175
|
-
}
|
|
176
|
-
Some(Attributes::WorkflowExecutionFailedEventAttributes(attrs)) => {
|
|
177
|
-
follow!(attrs);
|
|
178
|
-
Ok(WorkflowExecutionResult::Failed(
|
|
179
|
-
attrs.failure.unwrap_or_default(),
|
|
180
|
-
))
|
|
181
|
-
}
|
|
182
|
-
Some(Attributes::WorkflowExecutionCanceledEventAttributes(attrs)) => Ok(
|
|
183
|
-
WorkflowExecutionResult::Cancelled(Vec::from_payloads(attrs.details)),
|
|
184
|
-
),
|
|
185
|
-
Some(Attributes::WorkflowExecutionTimedOutEventAttributes(attrs)) => {
|
|
186
|
-
follow!(attrs);
|
|
187
|
-
Ok(WorkflowExecutionResult::TimedOut)
|
|
188
|
-
}
|
|
189
|
-
Some(Attributes::WorkflowExecutionTerminatedEventAttributes(attrs)) => Ok(
|
|
190
|
-
WorkflowExecutionResult::Terminated(Vec::from_payloads(attrs.details)),
|
|
191
|
-
),
|
|
192
|
-
Some(Attributes::WorkflowExecutionContinuedAsNewEventAttributes(attrs)) => {
|
|
193
|
-
if opts.follow_runs {
|
|
194
|
-
if !attrs.new_execution_run_id.is_empty() {
|
|
195
|
-
run_id = attrs.new_execution_run_id;
|
|
196
|
-
continue;
|
|
197
|
-
} else {
|
|
198
|
-
bail!("New execution run id was empty in continue as new event!");
|
|
199
|
-
}
|
|
200
|
-
} else {
|
|
201
|
-
Ok(WorkflowExecutionResult::ContinuedAsNew)
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
o => Err(anyhow!(
|
|
205
|
-
"Server returned an event that didn't match the CloseEvent filter. \
|
|
206
|
-
This is either a server bug or a new event the SDK does not understand. \
|
|
207
|
-
Event details: {o:?}"
|
|
208
|
-
)),
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
//! Error types exposed by public APIs
|
|
2
|
-
|
|
3
|
-
use crate::protos::coresdk::activity_result::ActivityExecutionResult;
|
|
4
|
-
|
|
5
|
-
/// Errors thrown by [crate::Worker::validate]
|
|
6
|
-
#[derive(thiserror::Error, Debug)]
|
|
7
|
-
pub enum WorkerValidationError {
|
|
8
|
-
/// The namespace provided to the worker does not exist on the server.
|
|
9
|
-
#[error("Namespace {namespace} was not found or otherwise could not be described: {source:?}")]
|
|
10
|
-
NamespaceDescribeError {
|
|
11
|
-
source: tonic::Status,
|
|
12
|
-
namespace: String,
|
|
13
|
-
},
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/// Errors thrown by [crate::Worker] polling methods
|
|
17
|
-
#[derive(thiserror::Error, Debug)]
|
|
18
|
-
pub enum PollError {
|
|
19
|
-
/// [crate::Worker::shutdown] was called, and there are no more tasks to be handled from this
|
|
20
|
-
/// poll function. Lang must call [crate::Worker::complete_workflow_activation],
|
|
21
|
-
/// [crate::Worker::complete_activity_task], or
|
|
22
|
-
/// [crate::Worker::complete_nexus_task] for any remaining tasks, and then may exit.
|
|
23
|
-
#[error("Core is shut down and there are no more tasks of this kind")]
|
|
24
|
-
ShutDown,
|
|
25
|
-
/// Unhandled error when calling the temporal server. Core will attempt to retry any non-fatal
|
|
26
|
-
/// errors, so lang should consider this fatal.
|
|
27
|
-
#[error("Unhandled grpc error when polling: {0:?}")]
|
|
28
|
-
TonicError(#[from] tonic::Status),
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/// Errors thrown by [crate::Worker::complete_workflow_activation]
|
|
32
|
-
#[derive(thiserror::Error, Debug)]
|
|
33
|
-
#[allow(clippy::large_enum_variant)]
|
|
34
|
-
pub enum CompleteWfError {
|
|
35
|
-
/// Lang SDK sent us a malformed workflow completion. This likely means a bug in the lang sdk.
|
|
36
|
-
#[error("Lang SDK sent us a malformed workflow completion for run ({run_id}): {reason}")]
|
|
37
|
-
MalformedWorkflowCompletion {
|
|
38
|
-
/// Reason the completion was malformed
|
|
39
|
-
reason: String,
|
|
40
|
-
/// The run associated with the completion
|
|
41
|
-
run_id: String,
|
|
42
|
-
},
|
|
43
|
-
/// Workflows have not been enabled on this worker.
|
|
44
|
-
#[error("Workflows are not enabled on this worker")]
|
|
45
|
-
WorkflowNotEnabled,
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/// Errors thrown by [crate::Worker::complete_activity_task]
|
|
49
|
-
#[derive(thiserror::Error, Debug)]
|
|
50
|
-
#[allow(clippy::large_enum_variant)]
|
|
51
|
-
pub enum CompleteActivityError {
|
|
52
|
-
/// Lang SDK sent us a malformed activity completion. This likely means a bug in the lang sdk.
|
|
53
|
-
#[error("Lang SDK sent us a malformed activity completion ({reason}): {completion:?}")]
|
|
54
|
-
MalformedActivityCompletion {
|
|
55
|
-
/// Reason the completion was malformed
|
|
56
|
-
reason: String,
|
|
57
|
-
/// The completion, which may not be included to avoid unnecessary copies.
|
|
58
|
-
completion: Option<ActivityExecutionResult>,
|
|
59
|
-
},
|
|
60
|
-
/// Activities have not been enabled on this worker.
|
|
61
|
-
#[error("Activities are not enabled on this worker")]
|
|
62
|
-
ActivityNotEnabled,
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/// Errors thrown by [crate::Worker::complete_nexus_task]
|
|
66
|
-
#[derive(thiserror::Error, Debug)]
|
|
67
|
-
pub enum CompleteNexusError {
|
|
68
|
-
/// Lang SDK sent us a malformed nexus completion. This likely means a bug in the lang sdk.
|
|
69
|
-
#[error("Lang SDK sent us a malformed nexus completion: {reason}")]
|
|
70
|
-
MalformedNexusCompletion {
|
|
71
|
-
/// Reason the completion was malformed
|
|
72
|
-
reason: String,
|
|
73
|
-
},
|
|
74
|
-
/// Nexus has not been enabled on this worker. If a user registers any Nexus handlers, the
|
|
75
|
-
#[error("Nexus is not enabled on this worker")]
|
|
76
|
-
NexusNotEnabled,
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/// Errors we can encounter during workflow processing which we may treat as either WFT failures
|
|
80
|
-
/// or whole-workflow failures depending on user preference.
|
|
81
|
-
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
|
|
82
|
-
pub enum WorkflowErrorType {
|
|
83
|
-
/// A nondeterminism error
|
|
84
|
-
Nondeterminism,
|
|
85
|
-
}
|