@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
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
use crate::{
|
|
2
|
-
ByteArray, ByteArrayRef, ByteArrayRefArray, UserDataHandle, client::
|
|
2
|
+
ByteArray, ByteArrayRef, ByteArrayRefArray, UserDataHandle, client::Connection,
|
|
3
|
+
runtime::Runtime,
|
|
3
4
|
};
|
|
4
5
|
use anyhow::{Context, bail};
|
|
5
6
|
use crossbeam_utils::atomic::AtomicCell;
|
|
@@ -10,23 +11,16 @@ use std::{
|
|
|
10
11
|
sync::Arc,
|
|
11
12
|
time::Duration,
|
|
12
13
|
};
|
|
13
|
-
use temporalio_common::{
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
coresdk::{
|
|
18
|
-
ActivityHeartbeat, ActivityTaskCompletion, nexus::NexusTaskCompletion,
|
|
19
|
-
workflow_completion::WorkflowActivationCompletion,
|
|
20
|
-
},
|
|
21
|
-
temporal::api::history::v1::History,
|
|
22
|
-
},
|
|
23
|
-
worker::{
|
|
24
|
-
SlotInfoTrait, SlotKind, SlotMarkUsedContext, SlotReleaseContext, SlotReservationContext,
|
|
25
|
-
SlotSupplierPermit,
|
|
14
|
+
use temporalio_common::protos::{
|
|
15
|
+
coresdk::{
|
|
16
|
+
ActivityHeartbeat, ActivityTaskCompletion, nexus::NexusTaskCompletion,
|
|
17
|
+
workflow_completion::WorkflowActivationCompletion,
|
|
26
18
|
},
|
|
19
|
+
temporal::api::history::v1::History,
|
|
27
20
|
};
|
|
28
21
|
use temporalio_sdk_core::{
|
|
29
|
-
|
|
22
|
+
PollError, SlotInfoTrait, SlotKind, SlotMarkUsedContext, SlotReleaseContext,
|
|
23
|
+
SlotReservationContext, SlotSupplierPermit, WorkerConfig, WorkflowErrorType,
|
|
30
24
|
replay::{HistoryForReplay, ReplayWorkerInput},
|
|
31
25
|
};
|
|
32
26
|
use tokio::sync::{
|
|
@@ -97,18 +91,18 @@ pub struct PollerBehavior {
|
|
|
97
91
|
pub autoscaling: *const PollerBehaviorAutoscaling,
|
|
98
92
|
}
|
|
99
93
|
|
|
100
|
-
impl TryFrom<&PollerBehavior> for
|
|
94
|
+
impl TryFrom<&PollerBehavior> for temporalio_sdk_core::PollerBehavior {
|
|
101
95
|
type Error = anyhow::Error;
|
|
102
96
|
fn try_from(value: &PollerBehavior) -> Result<Self, Self::Error> {
|
|
103
97
|
if !value.simple_maximum.is_null() && !value.autoscaling.is_null() {
|
|
104
98
|
bail!("simple_maximum and autoscaling cannot both be non-null values");
|
|
105
99
|
}
|
|
106
100
|
if let Some(value) = unsafe { value.simple_maximum.as_ref() } {
|
|
107
|
-
return Ok(
|
|
101
|
+
return Ok(temporalio_sdk_core::PollerBehavior::SimpleMaximum(
|
|
108
102
|
value.simple_maximum,
|
|
109
103
|
));
|
|
110
104
|
} else if let Some(value) = unsafe { value.autoscaling.as_ref() } {
|
|
111
|
-
return Ok(
|
|
105
|
+
return Ok(temporalio_sdk_core::PollerBehavior::Autoscaling {
|
|
112
106
|
minimum: value.minimum,
|
|
113
107
|
maximum: value.maximum,
|
|
114
108
|
initial: value.initial,
|
|
@@ -237,7 +231,7 @@ pub struct CustomSlotSupplierCallbacks {
|
|
|
237
231
|
/// is arbitrary, but must be unique among live reservations as it's later used for [`mark_used`](Self::mark_used)
|
|
238
232
|
/// and [`release`](Self::release) callbacks.
|
|
239
233
|
pub try_reserve: CustomSlotSupplierTryReserveCallback,
|
|
240
|
-
/// Called after successful reservation to mark slot as used. See [`SlotSupplier`](
|
|
234
|
+
/// Called after successful reservation to mark slot as used. See [`SlotSupplier`](temporalio_sdk_core::SlotSupplier)
|
|
241
235
|
/// trait for details.
|
|
242
236
|
pub mark_used: CustomSlotSupplierMarkUsedCallback,
|
|
243
237
|
/// Called to free a previously reserved slot.
|
|
@@ -258,8 +252,7 @@ pub struct CustomSlotSupplierCallbacks {
|
|
|
258
252
|
impl CustomSlotSupplierCallbacksImpl {
|
|
259
253
|
fn into_ss<SK: SlotKind + Send + Sync + 'static>(
|
|
260
254
|
self,
|
|
261
|
-
) -> Arc<dyn
|
|
262
|
-
{
|
|
255
|
+
) -> Arc<dyn temporalio_sdk_core::SlotSupplier<SlotKind = SK> + Send + Sync + 'static> {
|
|
263
256
|
Arc::new(CustomSlotSupplier {
|
|
264
257
|
inner: self,
|
|
265
258
|
_pd: Default::default(),
|
|
@@ -376,9 +369,7 @@ impl<'a, SK: SlotKind + Send + Sync> Drop for CancelReserveGuard<'a, SK> {
|
|
|
376
369
|
}
|
|
377
370
|
|
|
378
371
|
#[async_trait::async_trait]
|
|
379
|
-
impl<SK: SlotKind + Send + Sync>
|
|
380
|
-
for CustomSlotSupplier<SK>
|
|
381
|
-
{
|
|
372
|
+
impl<SK: SlotKind + Send + Sync> temporalio_sdk_core::SlotSupplier for CustomSlotSupplier<SK> {
|
|
382
373
|
type SlotKind = SK;
|
|
383
374
|
|
|
384
375
|
async fn reserve_slot(&self, ctx: &dyn SlotReservationContext) -> SlotSupplierPermit {
|
|
@@ -467,16 +458,12 @@ impl<SK: SlotKind + Send + Sync> CustomSlotSupplier<SK> {
|
|
|
467
458
|
fn convert_reserve_ctx(ctx: &dyn SlotReservationContext) -> SlotReserveCtx {
|
|
468
459
|
SlotReserveCtx {
|
|
469
460
|
slot_type: match SK::kind() {
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
temporalio_common::worker::SlotKindType::Activity => {
|
|
474
|
-
SlotKindType::ActivitySlotKindType
|
|
475
|
-
}
|
|
476
|
-
temporalio_common::worker::SlotKindType::LocalActivity => {
|
|
461
|
+
temporalio_sdk_core::SlotKindType::Workflow => SlotKindType::WorkflowSlotKindType,
|
|
462
|
+
temporalio_sdk_core::SlotKindType::Activity => SlotKindType::ActivitySlotKindType,
|
|
463
|
+
temporalio_sdk_core::SlotKindType::LocalActivity => {
|
|
477
464
|
SlotKindType::LocalActivitySlotKindType
|
|
478
465
|
}
|
|
479
|
-
|
|
466
|
+
temporalio_sdk_core::SlotKindType::Nexus => SlotKindType::NexusSlotKindType,
|
|
480
467
|
},
|
|
481
468
|
task_queue: ctx.task_queue().into(),
|
|
482
469
|
worker_identity: ctx.worker_identity().into(),
|
|
@@ -489,21 +476,19 @@ impl<SK: SlotKind + Send + Sync> CustomSlotSupplier<SK> {
|
|
|
489
476
|
}
|
|
490
477
|
}
|
|
491
478
|
|
|
492
|
-
fn convert_slot_info(info:
|
|
479
|
+
fn convert_slot_info(info: temporalio_sdk_core::SlotInfo) -> SlotInfo {
|
|
493
480
|
match info {
|
|
494
|
-
|
|
481
|
+
temporalio_sdk_core::SlotInfo::Workflow(w) => SlotInfo::WorkflowSlotInfo {
|
|
495
482
|
workflow_type: w.workflow_type.as_str().into(),
|
|
496
483
|
is_sticky: w.is_sticky,
|
|
497
484
|
},
|
|
498
|
-
|
|
485
|
+
temporalio_sdk_core::SlotInfo::Activity(a) => SlotInfo::ActivitySlotInfo {
|
|
499
486
|
activity_type: a.activity_type.as_str().into(),
|
|
500
487
|
},
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
}
|
|
506
|
-
temporalio_common::worker::SlotInfo::Nexus(n) => SlotInfo::NexusSlotInfo {
|
|
488
|
+
temporalio_sdk_core::SlotInfo::LocalActivity(a) => SlotInfo::LocalActivitySlotInfo {
|
|
489
|
+
activity_type: a.activity_type.as_str().into(),
|
|
490
|
+
},
|
|
491
|
+
temporalio_sdk_core::SlotInfo::Nexus(n) => SlotInfo::NexusSlotInfo {
|
|
507
492
|
operation: n.operation.as_str().into(),
|
|
508
493
|
service: n.service.as_str().into(),
|
|
509
494
|
},
|
|
@@ -563,43 +548,45 @@ macro_rules! enter_sync {
|
|
|
563
548
|
|
|
564
549
|
#[unsafe(no_mangle)]
|
|
565
550
|
pub extern "C" fn temporal_core_worker_new(
|
|
566
|
-
|
|
551
|
+
connection: *mut Connection,
|
|
567
552
|
options: *const WorkerOptions,
|
|
568
553
|
) -> WorkerOrFail {
|
|
569
|
-
let
|
|
570
|
-
enter_sync!(
|
|
554
|
+
let connection = unsafe { &mut *connection };
|
|
555
|
+
enter_sync!(connection.runtime);
|
|
571
556
|
let options = unsafe { &*options };
|
|
572
557
|
|
|
573
558
|
let (worker, fail) = match options.try_into() {
|
|
574
559
|
Err(err) => (
|
|
575
560
|
std::ptr::null_mut(),
|
|
576
|
-
|
|
561
|
+
connection
|
|
577
562
|
.runtime
|
|
578
563
|
.alloc_utf8(&format!("Invalid options: {err}"))
|
|
579
564
|
.into_raw()
|
|
580
565
|
.cast_const(),
|
|
581
566
|
),
|
|
582
|
-
Ok(config) =>
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
567
|
+
Ok(config) => {
|
|
568
|
+
match temporalio_sdk_core::init_worker(
|
|
569
|
+
&connection.runtime.core,
|
|
570
|
+
config,
|
|
571
|
+
connection.core.clone(),
|
|
572
|
+
) {
|
|
573
|
+
Err(err) => (
|
|
574
|
+
std::ptr::null_mut(),
|
|
575
|
+
connection
|
|
576
|
+
.runtime
|
|
577
|
+
.alloc_utf8(&format!("Worker start failed: {err}"))
|
|
578
|
+
.into_raw()
|
|
579
|
+
.cast_const(),
|
|
580
|
+
),
|
|
581
|
+
Ok(worker) => (
|
|
582
|
+
Box::into_raw(Box::new(Worker {
|
|
583
|
+
worker: Some(Arc::new(worker)),
|
|
584
|
+
runtime: connection.runtime.clone(),
|
|
585
|
+
})),
|
|
586
|
+
std::ptr::null(),
|
|
587
|
+
),
|
|
588
|
+
}
|
|
589
|
+
}
|
|
603
590
|
};
|
|
604
591
|
WorkerOrFail { worker, fail }
|
|
605
592
|
}
|
|
@@ -646,14 +633,14 @@ pub extern "C" fn temporal_core_worker_validate(
|
|
|
646
633
|
#[unsafe(no_mangle)]
|
|
647
634
|
pub extern "C" fn temporal_core_worker_replace_client(
|
|
648
635
|
worker: *mut Worker,
|
|
649
|
-
|
|
636
|
+
new_connection: *mut Connection,
|
|
650
637
|
) -> *const ByteArray {
|
|
651
638
|
let worker = unsafe { &*worker };
|
|
652
639
|
enter_sync!(worker.runtime);
|
|
653
640
|
let core_worker = worker.worker.as_ref().expect("missing worker").clone();
|
|
654
|
-
let client = unsafe { &*
|
|
641
|
+
let client = unsafe { &*new_connection };
|
|
655
642
|
|
|
656
|
-
match core_worker.replace_client(client.core.
|
|
643
|
+
match core_worker.replace_client(client.core.clone()) {
|
|
657
644
|
Ok(()) => std::ptr::null(),
|
|
658
645
|
Err(err) => worker
|
|
659
646
|
.runtime
|
|
@@ -1170,7 +1157,7 @@ impl TryFrom<&WorkerOptions> for temporalio_sdk_core::WorkerConfig {
|
|
|
1170
1157
|
.versioning_strategy({
|
|
1171
1158
|
match &opt.versioning_strategy {
|
|
1172
1159
|
WorkerVersioningStrategy::None(n) => {
|
|
1173
|
-
|
|
1160
|
+
temporalio_sdk_core::WorkerVersioningStrategy::None {
|
|
1174
1161
|
build_id: n.build_id.to_string(),
|
|
1175
1162
|
}
|
|
1176
1163
|
}
|
|
@@ -1183,7 +1170,7 @@ impl TryFrom<&WorkerOptions> for temporalio_sdk_core::WorkerConfig {
|
|
|
1183
1170
|
dopts.default_versioning_behavior
|
|
1184
1171
|
)
|
|
1185
1172
|
};
|
|
1186
|
-
|
|
1173
|
+
temporalio_sdk_core::WorkerVersioningStrategy::WorkerDeploymentBased(
|
|
1187
1174
|
temporalio_common::worker::WorkerDeploymentOptions {
|
|
1188
1175
|
version: temporalio_common::worker::WorkerDeploymentVersion {
|
|
1189
1176
|
deployment_name: dopts.version.deployment_name.to_string(),
|
|
@@ -1195,7 +1182,7 @@ impl TryFrom<&WorkerOptions> for temporalio_sdk_core::WorkerConfig {
|
|
|
1195
1182
|
)
|
|
1196
1183
|
}
|
|
1197
1184
|
WorkerVersioningStrategy::LegacyBuildIdBased(l) => {
|
|
1198
|
-
|
|
1185
|
+
temporalio_sdk_core::WorkerVersioningStrategy::LegacyBuildIdBased {
|
|
1199
1186
|
build_id: l.build_id.to_string(),
|
|
1200
1187
|
}
|
|
1201
1188
|
}
|
|
@@ -1232,14 +1219,14 @@ impl TryFrom<&WorkerOptions> for temporalio_sdk_core::WorkerConfig {
|
|
|
1232
1219
|
// auto-cancel-activity behavior or shutdown will not occur, so we
|
|
1233
1220
|
// always set it even if 0.
|
|
1234
1221
|
.graceful_shutdown_period(Duration::from_millis(opt.graceful_shutdown_period_millis))
|
|
1235
|
-
.workflow_task_poller_behavior(
|
|
1222
|
+
.workflow_task_poller_behavior(temporalio_sdk_core::PollerBehavior::try_from(
|
|
1236
1223
|
&opt.workflow_task_poller_behavior,
|
|
1237
1224
|
)?)
|
|
1238
1225
|
.nonsticky_to_sticky_poll_ratio(opt.nonsticky_to_sticky_poll_ratio)
|
|
1239
|
-
.activity_task_poller_behavior(
|
|
1226
|
+
.activity_task_poller_behavior(temporalio_sdk_core::PollerBehavior::try_from(
|
|
1240
1227
|
&opt.activity_task_poller_behavior,
|
|
1241
1228
|
)?)
|
|
1242
|
-
.nexus_task_poller_behavior(
|
|
1229
|
+
.nexus_task_poller_behavior(temporalio_sdk_core::PollerBehavior::try_from(
|
|
1243
1230
|
&opt.nexus_task_poller_behavior,
|
|
1244
1231
|
)?)
|
|
1245
1232
|
.workflow_failure_errors(if opt.nondeterminism_as_workflow_fail {
|
package/sdk-core/rustfmt.toml
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
imports_granularity="Crate"
|
|
1
|
+
imports_granularity="Crate"
|
|
2
|
+
format_code_in_doc_comments=true
|