@temporalio/core-bridge 1.13.1 → 1.14.0
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 +350 -436
- package/Cargo.toml +14 -13
- package/{sdk-core/fsm/rustfsm_procmacro/LICENSE.txt → LICENSE} +5 -5
- package/README.md +0 -1
- package/bridge-macros/Cargo.toml +16 -0
- package/bridge-macros/src/derive_js_function.rs +126 -0
- package/bridge-macros/src/derive_tryfromjs.rs +138 -0
- package/bridge-macros/src/derive_tryintojs.rs +151 -0
- package/bridge-macros/src/lib.rs +42 -0
- package/lib/native.d.ts +23 -9
- package/package.json +6 -5
- 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/.cargo/config.toml +78 -12
- package/sdk-core/.clippy.toml +1 -0
- package/sdk-core/.github/workflows/heavy.yml +2 -0
- package/sdk-core/.github/workflows/per-pr.yml +90 -21
- package/sdk-core/AGENTS.md +17 -19
- package/sdk-core/ARCHITECTURE.md +44 -48
- package/sdk-core/Cargo.toml +25 -7
- package/sdk-core/README.md +16 -15
- package/sdk-core/arch_docs/diagrams/TimerMachine_Coverage.puml +14 -0
- package/sdk-core/arch_docs/diagrams/deps.svg +102 -0
- package/sdk-core/arch_docs/diagrams/initial_event_history.png +0 -0
- package/sdk-core/arch_docs/sdks_intro.md +299 -0
- package/sdk-core/{client → crates/client}/Cargo.toml +15 -16
- package/sdk-core/{client → crates/client}/src/callback_based.rs +1 -2
- package/sdk-core/{client → crates/client}/src/lib.rs +594 -457
- package/sdk-core/{client → crates/client}/src/metrics.rs +32 -8
- package/sdk-core/crates/client/src/proxy.rs +209 -0
- package/sdk-core/{client → crates/client}/src/raw.rs +648 -328
- package/sdk-core/crates/client/src/replaceable.rs +253 -0
- package/sdk-core/crates/client/src/request_extensions.rs +40 -0
- package/sdk-core/{client → crates/client}/src/retry.rs +32 -22
- package/sdk-core/crates/client/src/worker/mod.rs +1468 -0
- package/sdk-core/{client → crates/client}/src/workflow_handle/mod.rs +24 -21
- package/sdk-core/{core-api → crates/common}/Cargo.toml +21 -12
- package/sdk-core/{sdk-core-protos → crates/common}/build.rs +10 -23
- package/sdk-core/crates/common/protos/api_cloud_upstream/VERSION +1 -0
- package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/account/v1/message.proto +18 -0
- package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/cloudservice/v1/request_response.proto +38 -11
- package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/cloudservice/v1/service.proto +21 -4
- package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/operation/v1/message.proto +6 -6
- package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/sink/v1/message.proto +22 -0
- package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/create-release.yml +13 -0
- package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/openapi/openapiv2.json +254 -5
- package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/openapi/openapiv3.yaml +234 -5
- package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/common/v1/message.proto +1 -1
- package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/deployment/v1/message.proto +6 -0
- package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/namespace/v1/message.proto +6 -2
- package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +60 -2
- package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +30 -6
- package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +2 -0
- package/sdk-core/{core-api → crates/common}/src/envconfig.rs +155 -56
- package/sdk-core/{core-api → crates/common}/src/errors.rs +8 -1
- package/sdk-core/{fsm/rustfsm_trait/src/lib.rs → crates/common/src/fsm_trait.rs} +1 -27
- package/sdk-core/{core-api → crates/common}/src/lib.rs +92 -9
- package/sdk-core/{test-utils/src → crates/common/src/protos}/canned_histories.rs +5 -5
- package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/history_builder.rs +3 -3
- package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/history_info.rs +2 -2
- package/sdk-core/{sdk-core-protos/src/lib.rs → crates/common/src/protos/mod.rs} +43 -26
- package/sdk-core/crates/common/src/protos/test_utils.rs +89 -0
- package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/utilities.rs +14 -5
- package/sdk-core/{core-api → crates/common}/src/telemetry/metrics.rs +449 -51
- package/sdk-core/{core-api → crates/common}/src/telemetry.rs +16 -1
- package/sdk-core/{core-api → crates/common}/src/worker.rs +112 -18
- package/sdk-core/crates/common/tests/worker_task_types_test.rs +129 -0
- package/sdk-core/crates/macros/Cargo.toml +23 -0
- package/sdk-core/{fsm/rustfsm_procmacro → crates/macros}/src/lib.rs +12 -12
- package/sdk-core/{sdk → crates/sdk}/Cargo.toml +18 -12
- package/sdk-core/{sdk → crates/sdk}/src/activity_context.rs +9 -7
- package/sdk-core/{sdk → crates/sdk}/src/app_data.rs +1 -1
- package/sdk-core/{sdk → crates/sdk}/src/interceptors.rs +2 -5
- package/sdk-core/{sdk → crates/sdk}/src/lib.rs +43 -42
- package/sdk-core/{sdk → crates/sdk}/src/workflow_context/options.rs +12 -3
- package/sdk-core/{sdk → crates/sdk}/src/workflow_context.rs +21 -19
- package/sdk-core/{sdk → crates/sdk}/src/workflow_future.rs +2 -2
- package/sdk-core/crates/sdk-core/Cargo.toml +222 -0
- package/sdk-core/{core/benches/workflow_replay.rs → crates/sdk-core/benches/workflow_replay_bench.rs} +15 -10
- package/sdk-core/crates/sdk-core/machine_coverage/ActivityMachine_Coverage.puml +32 -0
- package/sdk-core/crates/sdk-core/machine_coverage/CancelExternalMachine_Coverage.puml +9 -0
- package/sdk-core/crates/sdk-core/machine_coverage/CancelWorkflowMachine_Coverage.puml +6 -0
- package/sdk-core/crates/sdk-core/machine_coverage/ChildWorkflowMachine_Coverage.puml +27 -0
- package/sdk-core/crates/sdk-core/machine_coverage/CompleteWorkflowMachine_Coverage.puml +6 -0
- package/sdk-core/crates/sdk-core/machine_coverage/ContinueAsNewWorkflowMachine_Coverage.puml +6 -0
- package/sdk-core/crates/sdk-core/machine_coverage/FailWorkflowMachine_Coverage.puml +6 -0
- package/sdk-core/crates/sdk-core/machine_coverage/LocalActivityMachine_Coverage.puml +23 -0
- package/sdk-core/crates/sdk-core/machine_coverage/ModifyWorkflowPropertiesMachine_Coverage.puml +5 -0
- package/sdk-core/crates/sdk-core/machine_coverage/PatchMachine_Coverage.puml +8 -0
- package/sdk-core/crates/sdk-core/machine_coverage/SignalExternalMachine_Coverage.puml +12 -0
- package/sdk-core/crates/sdk-core/machine_coverage/TimerMachine_Coverage.puml +13 -0
- package/sdk-core/crates/sdk-core/machine_coverage/UpdateMachine_Coverage.puml +19 -0
- package/sdk-core/crates/sdk-core/machine_coverage/UpsertSearchAttributesMachine_Coverage.puml +5 -0
- package/sdk-core/crates/sdk-core/machine_coverage/WorkflowTaskMachine_Coverage.puml +11 -0
- package/sdk-core/{core → crates/sdk-core}/src/abstractions.rs +62 -6
- package/sdk-core/crates/sdk-core/src/antithesis.rs +60 -0
- package/sdk-core/{core → crates/sdk-core}/src/core_tests/activity_tasks.rs +85 -250
- package/sdk-core/{core → crates/sdk-core}/src/core_tests/mod.rs +13 -16
- package/sdk-core/{core → crates/sdk-core}/src/core_tests/queries.rs +25 -24
- package/sdk-core/{core → crates/sdk-core}/src/core_tests/replay_flag.rs +11 -68
- package/sdk-core/{core → crates/sdk-core}/src/core_tests/updates.rs +21 -20
- package/sdk-core/{core → crates/sdk-core}/src/core_tests/workers.rs +242 -16
- package/sdk-core/{core → crates/sdk-core}/src/core_tests/workflow_cancels.rs +10 -7
- package/sdk-core/{core → crates/sdk-core}/src/core_tests/workflow_tasks.rs +150 -326
- package/sdk-core/{core → crates/sdk-core}/src/debug_client.rs +1 -1
- package/sdk-core/{core → crates/sdk-core}/src/ephemeral_server/mod.rs +18 -6
- package/sdk-core/{test-utils → crates/sdk-core}/src/histfetch.rs +9 -4
- package/sdk-core/{core → crates/sdk-core}/src/internal_flags.rs +15 -4
- package/sdk-core/{core → crates/sdk-core}/src/lib.rs +128 -72
- package/sdk-core/{core → crates/sdk-core}/src/pollers/mod.rs +13 -11
- package/sdk-core/{core → crates/sdk-core}/src/pollers/poll_buffer.rs +53 -18
- package/sdk-core/{core → crates/sdk-core}/src/protosext/mod.rs +14 -6
- package/sdk-core/{core → crates/sdk-core}/src/protosext/protocol_messages.rs +5 -12
- package/sdk-core/{core → crates/sdk-core}/src/replay/mod.rs +14 -11
- package/sdk-core/crates/sdk-core/src/retry_logic.rs +390 -0
- package/sdk-core/{core → crates/sdk-core}/src/telemetry/log_export.rs +2 -2
- package/sdk-core/{core → crates/sdk-core}/src/telemetry/metrics.rs +80 -33
- package/sdk-core/{core → crates/sdk-core}/src/telemetry/mod.rs +12 -6
- package/sdk-core/{core → crates/sdk-core}/src/telemetry/otel.rs +1 -1
- package/sdk-core/{core → crates/sdk-core}/src/telemetry/prometheus_meter.rs +14 -14
- package/sdk-core/{core → crates/sdk-core}/src/telemetry/prometheus_server.rs +2 -2
- package/sdk-core/{core/src/test_help/mod.rs → crates/sdk-core/src/test_help/integ_helpers.rs} +284 -329
- package/sdk-core/crates/sdk-core/src/test_help/mod.rs +13 -0
- package/sdk-core/crates/sdk-core/src/test_help/unit_helpers.rs +220 -0
- package/sdk-core/{core → crates/sdk-core}/src/worker/activities/activity_heartbeat_manager.rs +44 -8
- package/sdk-core/{core → crates/sdk-core}/src/worker/activities/local_activities.rs +33 -31
- package/sdk-core/{core → crates/sdk-core}/src/worker/activities.rs +31 -15
- package/sdk-core/{core → crates/sdk-core}/src/worker/client/mocks.rs +28 -15
- package/sdk-core/{core → crates/sdk-core}/src/worker/client.rs +275 -145
- package/sdk-core/crates/sdk-core/src/worker/heartbeat.rs +246 -0
- package/sdk-core/crates/sdk-core/src/worker/mod.rs +1462 -0
- package/sdk-core/{core → crates/sdk-core}/src/worker/nexus.rs +24 -12
- package/sdk-core/{core → crates/sdk-core}/src/worker/slot_provider.rs +18 -10
- package/sdk-core/{core → crates/sdk-core}/src/worker/tuner/fixed_size.rs +5 -1
- package/sdk-core/{core → crates/sdk-core}/src/worker/tuner/resource_based.rs +453 -57
- package/sdk-core/{core → crates/sdk-core}/src/worker/tuner.rs +179 -3
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/driven_workflow.rs +1 -1
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/history_update.rs +5 -267
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/activity_state_machine.rs +147 -90
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/cancel_external_state_machine.rs +8 -91
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/cancel_nexus_op_state_machine.rs +14 -12
- package/sdk-core/crates/sdk-core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +97 -0
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/child_workflow_state_machine.rs +32 -229
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/complete_workflow_state_machine.rs +13 -8
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +6 -50
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/fail_workflow_state_machine.rs +6 -7
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/local_activity_state_machine.rs +39 -584
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/mod.rs +22 -17
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +4 -74
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/nexus_operation_state_machine.rs +118 -21
- package/sdk-core/crates/sdk-core/src/worker/workflow/machines/patch_state_machine.rs +273 -0
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/signal_external_state_machine.rs +9 -151
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/timer_state_machine.rs +27 -132
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/transition_coverage.rs +1 -2
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/update_state_machine.rs +19 -13
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +25 -80
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/workflow_machines/local_acts.rs +1 -1
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/workflow_machines.rs +68 -72
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/workflow_task_state_machine.rs +13 -15
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/managed_run.rs +55 -37
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/mod.rs +171 -61
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/run_cache.rs +10 -7
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/wft_extraction.rs +4 -2
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/wft_poller.rs +15 -4
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/workflow_stream.rs +38 -19
- package/sdk-core/crates/sdk-core/tests/c_bridge_smoke_test.c +10 -0
- package/sdk-core/crates/sdk-core/tests/cloud_tests.rs +25 -0
- package/sdk-core/crates/sdk-core/tests/common/fake_grpc_server.rs +106 -0
- package/sdk-core/crates/sdk-core/tests/common/http_proxy.rs +134 -0
- package/sdk-core/{test-utils/src/lib.rs → crates/sdk-core/tests/common/mod.rs} +286 -334
- package/sdk-core/{test-utils/src → crates/sdk-core/tests/common}/workflows.rs +6 -4
- package/sdk-core/crates/sdk-core/tests/fsm_procmacro.rs +6 -0
- package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/dupe_transitions_fail.rs +1 -3
- package/sdk-core/crates/sdk-core/tests/fsm_trybuild/dupe_transitions_fail.stderr +12 -0
- package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/dynamic_dest_pass.rs +2 -4
- package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/forgot_name_fail.rs +1 -3
- package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/forgot_name_fail.stderr +4 -4
- package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/handler_arg_pass.rs +2 -4
- package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/handler_pass.rs +2 -4
- package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/medium_complex_pass.rs +2 -4
- package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/no_handle_conversions_require_into_fail.rs +2 -4
- package/sdk-core/crates/sdk-core/tests/fsm_trybuild/no_handle_conversions_require_into_fail.stderr +15 -0
- package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/simple_pass.rs +2 -4
- package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/struct_event_variant_fail.rs +1 -3
- package/sdk-core/crates/sdk-core/tests/fsm_trybuild/struct_event_variant_fail.stderr +5 -0
- package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/tuple_more_item_event_variant_fail.rs +1 -3
- package/sdk-core/crates/sdk-core/tests/fsm_trybuild/tuple_more_item_event_variant_fail.stderr +5 -0
- package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/tuple_zero_item_event_variant_fail.rs +1 -3
- package/sdk-core/crates/sdk-core/tests/fsm_trybuild/tuple_zero_item_event_variant_fail.stderr +5 -0
- package/sdk-core/{tests → crates/sdk-core/tests}/global_metric_tests.rs +22 -22
- package/sdk-core/{tests → crates/sdk-core/tests/heavy_tests}/fuzzy_workflow.rs +4 -4
- package/sdk-core/{tests → crates/sdk-core/tests}/heavy_tests.rs +25 -14
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/activity_functions.rs +1 -1
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/client_tests.rs +115 -123
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/ephemeral_server_tests.rs +19 -15
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/heartbeat_tests.rs +24 -20
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/metrics_tests.rs +241 -67
- package/sdk-core/crates/sdk-core/tests/integ_tests/pagination_tests.rs +273 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/polling_tests.rs +513 -0
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/queries_tests.rs +13 -11
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/update_tests.rs +47 -29
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/visibility_tests.rs +49 -27
- package/sdk-core/crates/sdk-core/tests/integ_tests/worker_heartbeat_tests.rs +1061 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/worker_tests.rs +920 -0
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/worker_versioning_tests.rs +58 -40
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/activities.rs +268 -30
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/appdata_propagation.rs +4 -4
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +155 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +121 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +717 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +109 -0
- package/sdk-core/{core/src/core_tests → crates/sdk-core/tests/integ_tests/workflow_tests}/determinism.rs +108 -20
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/eager.rs +10 -5
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +2884 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +119 -0
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/nexus.rs +174 -46
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/patches.rs +740 -0
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/replay.rs +78 -27
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/resets.rs +46 -28
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/signals.rs +294 -0
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/stickyness.rs +9 -8
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/timers.rs +249 -0
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/upsert_search_attrs.rs +72 -7
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests.rs +97 -33
- package/sdk-core/{tests → crates/sdk-core/tests}/main.rs +40 -25
- package/sdk-core/{tests → crates/sdk-core/tests}/manual_tests.rs +25 -15
- package/sdk-core/{tests → crates/sdk-core/tests}/runner.rs +23 -41
- package/sdk-core/{tests → crates/sdk-core/tests}/shared_tests/mod.rs +11 -6
- package/sdk-core/{tests → crates/sdk-core/tests}/shared_tests/priority.rs +6 -6
- package/sdk-core/crates/sdk-core-c-bridge/Cargo.toml +59 -0
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/include/temporal-sdk-core-c-bridge.h +215 -44
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/client.rs +515 -214
- package/sdk-core/crates/sdk-core-c-bridge/src/envconfig.rs +314 -0
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/lib.rs +2 -1
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/metric.rs +1 -1
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/random.rs +4 -4
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/runtime.rs +42 -28
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/testing.rs +2 -5
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/tests/context.rs +42 -41
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/tests/mod.rs +38 -34
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/tests/utils.rs +10 -11
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/worker.rs +427 -121
- package/sdk-core/docker-cgroup-tests.sh +24 -0
- package/sdk-core/{docker → etc/docker}/docker-compose-ci.yaml +9 -9
- package/sdk-core/{docker → etc/docker}/docker-compose-telem.yaml +11 -11
- package/sdk-core/{docker → etc/docker}/docker-compose.yaml +8 -8
- package/sdk-core/{integ-with-otel.sh → etc/integ-with-otel.sh} +1 -1
- package/sdk-core/etc/regen-depgraph.sh +2 -2
- package/src/client.rs +117 -49
- package/src/helpers/callbacks.rs +4 -4
- package/src/helpers/errors.rs +7 -1
- package/src/helpers/handles.rs +1 -0
- package/src/helpers/try_from_js.rs +5 -4
- package/src/lib.rs +3 -2
- package/src/logs.rs +1 -1
- package/src/metrics.rs +6 -3
- package/src/runtime.rs +41 -24
- package/src/testing.rs +3 -3
- package/src/worker.rs +77 -44
- package/ts/native.ts +26 -9
- package/LICENSE.md +0 -23
- package/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
- package/sdk-core/client/src/proxy.rs +0 -90
- package/sdk-core/client/src/worker_registry/mod.rs +0 -266
- package/sdk-core/core/Cargo.toml +0 -146
- package/sdk-core/core/src/core_tests/child_workflows.rs +0 -281
- package/sdk-core/core/src/core_tests/local_activities.rs +0 -1442
- package/sdk-core/core/src/retry_logic.rs +0 -224
- package/sdk-core/core/src/worker/heartbeat.rs +0 -231
- package/sdk-core/core/src/worker/mod.rs +0 -980
- package/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -165
- package/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -801
- package/sdk-core/core-c-bridge/Cargo.toml +0 -51
- package/sdk-core/etc/deps.svg +0 -162
- package/sdk-core/fsm/Cargo.toml +0 -21
- package/sdk-core/fsm/README.md +0 -3
- package/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
- package/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
- package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
- package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -15
- package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
- package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
- package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
- package/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
- package/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -21
- package/sdk-core/fsm/src/lib.rs +0 -2
- package/sdk-core/sdk-core-protos/Cargo.toml +0 -37
- package/sdk-core/sdk-core-protos/protos/api_cloud_upstream/VERSION +0 -1
- package/sdk-core/test-utils/Cargo.toml +0 -38
- package/sdk-core/test-utils/src/interceptors.rs +0 -46
- package/sdk-core/tests/cloud_tests.rs +0 -23
- package/sdk-core/tests/integ_tests/polling_tests.rs +0 -294
- package/sdk-core/tests/integ_tests/worker_tests.rs +0 -203
- package/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -74
- package/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -57
- package/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -246
- package/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -65
- package/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -85
- package/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -908
- package/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -51
- package/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -206
- package/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -164
- package/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -123
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/.github/workflows/build.yaml +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/.github/workflows/push-to-buf.yml +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/CODEOWNERS +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/LICENSE +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/Makefile +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/README.md +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/buf.gen.yaml +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/buf.lock +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/buf.yaml +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/connectivityrule/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/identity/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/namespace/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/nexus/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/region/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/resource/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/usage/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/CODEOWNERS +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/ci.yml +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/publish-docs.yml +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/push-to-buf.yml +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/trigger-api-go-delete-release.yml +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/trigger-api-go-publish-release.yml +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/trigger-api-go-update.yml +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/LICENSE +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/Makefile +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/README.md +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/api-linter.yaml +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/buf.gen.yaml +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/buf.lock +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/buf.yaml +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/api/annotations.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/api/http.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/any.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/descriptor.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/duration.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/empty.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/struct.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/timestamp.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/wrappers.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/openapi/payload_description.txt +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/activity/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/command/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/deployment.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/nexus.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/export/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/history/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/nexus/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/query/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/rules/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/enhanced_stack_trace.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/user_metadata.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/worker_config.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/workflow_metadata.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/update/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/version/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/worker/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/google/rpc/status.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/grpc/health/v1/health.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/common/common.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/core_interface.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/nexus/nexus.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/Makefile +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/api-linter.yaml +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/buf.yaml +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -0
- /package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/constants.rs +0 -0
- /package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/task_token.rs +0 -0
- /package/sdk-core/{fsm → crates/macros}/LICENSE.txt +0 -0
- /package/sdk-core/{core → crates/sdk-core}/src/abstractions/take_cell.rs +0 -0
- /package/sdk-core/{core → crates/sdk-core}/src/worker/slot_supplier.rs +0 -0
- /package/sdk-core/{histories → crates/sdk-core/tests/histories}/ends_empty_wft_complete.bin +0 -0
- /package/sdk-core/{histories → crates/sdk-core/tests/histories}/evict_while_la_running_no_interference-16_history.bin +0 -0
- /package/sdk-core/{histories → crates/sdk-core/tests/histories}/evict_while_la_running_no_interference-23_history.bin +0 -0
- /package/sdk-core/{histories → crates/sdk-core/tests/histories}/evict_while_la_running_no_interference-85_history.bin +0 -0
- /package/sdk-core/{histories → crates/sdk-core/tests/histories}/fail_wf_task.bin +0 -0
- /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-0_history.bin +0 -0
- /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-1_history.bin +0 -0
- /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-2_history.bin +0 -0
- /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-3_history.bin +0 -0
- /package/sdk-core/{histories → crates/sdk-core/tests/histories}/old_change_marker_format.bin +0 -0
- /package/sdk-core/{histories → crates/sdk-core/tests/histories}/timer_workflow_history.bin +0 -0
- /package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/priority.rs +0 -0
- /package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/build.rs +0 -0
- /package/sdk-core/{cargo-tokio-console.sh → etc/cargo-tokio-console.sh} +0 -0
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
//! Contains tracing/logging and metrics related functionality
|
|
2
|
+
|
|
1
3
|
pub mod metrics;
|
|
2
4
|
|
|
3
5
|
use crate::telemetry::metrics::CoreMeter;
|
|
@@ -49,6 +51,9 @@ pub struct TelemetryOptions {
|
|
|
49
51
|
/// all logging and traces.
|
|
50
52
|
#[builder(setter(strip_option), default)]
|
|
51
53
|
pub subscriber_override: Option<Arc<dyn Subscriber + Send + Sync>>,
|
|
54
|
+
/// See [TaskQueueLabelStrategy].
|
|
55
|
+
#[builder(default = "TaskQueueLabelStrategy::UseNormal")]
|
|
56
|
+
pub task_queue_label_strategy: TaskQueueLabelStrategy,
|
|
52
57
|
}
|
|
53
58
|
impl Debug for TelemetryOptions {
|
|
54
59
|
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
|
@@ -80,6 +85,16 @@ impl Debug for TelemetryOptions {
|
|
|
80
85
|
}
|
|
81
86
|
}
|
|
82
87
|
|
|
88
|
+
/// Determines how the `task_queue` label value is set on metrics.
|
|
89
|
+
#[derive(Copy, Clone, Debug)]
|
|
90
|
+
#[non_exhaustive]
|
|
91
|
+
pub enum TaskQueueLabelStrategy {
|
|
92
|
+
/// Always use the normal task queue name, including for actions relating to sticky queues.
|
|
93
|
+
UseNormal,
|
|
94
|
+
/// Use the sticky queue name when recording metrics operating on sticky queues.
|
|
95
|
+
UseNormalAndSticky,
|
|
96
|
+
}
|
|
97
|
+
|
|
83
98
|
/// Options for exporting to an OpenTelemetry Collector
|
|
84
99
|
#[derive(Debug, Clone, derive_builder::Builder)]
|
|
85
100
|
pub struct OtelCollectorOptions {
|
|
@@ -160,7 +175,7 @@ pub enum Logger {
|
|
|
160
175
|
filter: String,
|
|
161
176
|
},
|
|
162
177
|
/// Push logs to Lang. Can be used with
|
|
163
|
-
///
|
|
178
|
+
/// temporalio_sdk_core::telemetry::log_export::CoreLogBufferedConsumer to buffer.
|
|
164
179
|
Push {
|
|
165
180
|
/// An [EnvFilter](https://docs.rs/tracing-subscriber/latest/tracing_subscriber/struct.EnvFilter.html) filter string.
|
|
166
181
|
filter: String,
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
//! Contains types that are needed by both the client and the sdk when configuring / interacting
|
|
2
|
+
//! with workers.
|
|
3
|
+
|
|
4
|
+
use crate::{
|
|
5
|
+
errors::WorkflowErrorType,
|
|
6
|
+
protos::{
|
|
7
|
+
coresdk,
|
|
8
|
+
coresdk::{ActivitySlotInfo, LocalActivitySlotInfo, NexusSlotInfo, WorkflowSlotInfo},
|
|
9
|
+
temporal,
|
|
10
|
+
temporal::api::{enums::v1::VersioningBehavior, worker::v1::PluginInfo},
|
|
11
|
+
},
|
|
12
|
+
telemetry::metrics::TemporalMeter,
|
|
13
|
+
};
|
|
2
14
|
use std::{
|
|
3
15
|
any::Any,
|
|
4
16
|
collections::{HashMap, HashSet},
|
|
@@ -6,12 +18,74 @@ use std::{
|
|
|
6
18
|
sync::Arc,
|
|
7
19
|
time::Duration,
|
|
8
20
|
};
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
21
|
+
|
|
22
|
+
/// Specifies which task types a worker will poll for.
|
|
23
|
+
///
|
|
24
|
+
/// Workers can be configured to handle any combination of workflows, activities, and nexus operations.
|
|
25
|
+
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
26
|
+
pub struct WorkerTaskTypes {
|
|
27
|
+
pub enable_workflows: bool,
|
|
28
|
+
pub enable_local_activities: bool,
|
|
29
|
+
pub enable_remote_activities: bool,
|
|
30
|
+
pub enable_nexus: bool,
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
impl WorkerTaskTypes {
|
|
34
|
+
/// Check if no task types are enabled
|
|
35
|
+
pub fn is_empty(&self) -> bool {
|
|
36
|
+
!self.enable_workflows
|
|
37
|
+
&& !self.enable_local_activities
|
|
38
|
+
&& !self.enable_remote_activities
|
|
39
|
+
&& !self.enable_nexus
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/// Create a config with all task types enabled
|
|
43
|
+
pub fn all() -> WorkerTaskTypes {
|
|
44
|
+
WorkerTaskTypes {
|
|
45
|
+
enable_workflows: true,
|
|
46
|
+
enable_local_activities: true,
|
|
47
|
+
enable_remote_activities: true,
|
|
48
|
+
enable_nexus: true,
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/// Create a config with only workflow tasks enabled
|
|
53
|
+
pub fn workflow_only() -> WorkerTaskTypes {
|
|
54
|
+
WorkerTaskTypes {
|
|
55
|
+
enable_workflows: true,
|
|
56
|
+
enable_local_activities: false,
|
|
57
|
+
enable_remote_activities: false,
|
|
58
|
+
enable_nexus: false,
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/// Create a config with only activity tasks enabled
|
|
63
|
+
pub fn activity_only() -> WorkerTaskTypes {
|
|
64
|
+
WorkerTaskTypes {
|
|
65
|
+
enable_workflows: false,
|
|
66
|
+
enable_local_activities: false,
|
|
67
|
+
enable_remote_activities: true,
|
|
68
|
+
enable_nexus: false,
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/// Create a config with only nexus tasks enabled
|
|
73
|
+
pub fn nexus_only() -> WorkerTaskTypes {
|
|
74
|
+
WorkerTaskTypes {
|
|
75
|
+
enable_workflows: false,
|
|
76
|
+
enable_local_activities: false,
|
|
77
|
+
enable_remote_activities: false,
|
|
78
|
+
enable_nexus: true,
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
pub fn overlaps_with(&self, other: &WorkerTaskTypes) -> bool {
|
|
83
|
+
(self.enable_workflows && other.enable_workflows)
|
|
84
|
+
|| (self.enable_local_activities && other.enable_local_activities)
|
|
85
|
+
|| (self.enable_remote_activities && other.enable_remote_activities)
|
|
86
|
+
|| (self.enable_nexus && other.enable_nexus)
|
|
87
|
+
}
|
|
88
|
+
}
|
|
15
89
|
|
|
16
90
|
/// Defines per-worker configuration options
|
|
17
91
|
#[derive(Clone, derive_builder::Builder)]
|
|
@@ -61,10 +135,10 @@ pub struct WorkerConfig {
|
|
|
61
135
|
/// worker's task queue
|
|
62
136
|
#[builder(default = "PollerBehavior::SimpleMaximum(5)")]
|
|
63
137
|
pub nexus_task_poller_behavior: PollerBehavior,
|
|
64
|
-
///
|
|
65
|
-
///
|
|
66
|
-
|
|
67
|
-
pub
|
|
138
|
+
/// Specifies which task types this worker will poll for.
|
|
139
|
+
///
|
|
140
|
+
/// Note: At least one task type must be specified or the worker will fail validation.
|
|
141
|
+
pub task_types: WorkerTaskTypes,
|
|
68
142
|
/// How long a workflow task is allowed to sit on the sticky queue before it is timed out
|
|
69
143
|
/// and moved to the non-sticky queue where it may be picked up by any worker.
|
|
70
144
|
#[builder(default = "Duration::from_secs(10)")]
|
|
@@ -141,19 +215,19 @@ pub struct WorkerConfig {
|
|
|
141
215
|
/// Mutually exclusive with `tuner`
|
|
142
216
|
#[builder(setter(into, strip_option), default)]
|
|
143
217
|
pub max_outstanding_workflow_tasks: Option<usize>,
|
|
144
|
-
/// The maximum number of activity tasks that will ever be given to this worker concurrently
|
|
218
|
+
/// The maximum number of activity tasks that will ever be given to this worker concurrently.
|
|
145
219
|
///
|
|
146
220
|
/// Mutually exclusive with `tuner`
|
|
147
221
|
#[builder(setter(into, strip_option), default)]
|
|
148
222
|
pub max_outstanding_activities: Option<usize>,
|
|
149
223
|
/// The maximum number of local activity tasks that will ever be given to this worker
|
|
150
|
-
/// concurrently
|
|
224
|
+
/// concurrently.
|
|
151
225
|
///
|
|
152
226
|
/// Mutually exclusive with `tuner`
|
|
153
227
|
#[builder(setter(into, strip_option), default)]
|
|
154
228
|
pub max_outstanding_local_activities: Option<usize>,
|
|
155
229
|
/// The maximum number of nexus tasks that will ever be given to this worker
|
|
156
|
-
/// concurrently
|
|
230
|
+
/// concurrently.
|
|
157
231
|
///
|
|
158
232
|
/// Mutually exclusive with `tuner`
|
|
159
233
|
#[builder(setter(into, strip_option), default)]
|
|
@@ -162,11 +236,13 @@ pub struct WorkerConfig {
|
|
|
162
236
|
/// A versioning strategy for this worker.
|
|
163
237
|
pub versioning_strategy: WorkerVersioningStrategy,
|
|
164
238
|
|
|
165
|
-
///
|
|
166
|
-
/// The timer is reset on each existing RPC call that also happens to send this data, like
|
|
167
|
-
/// `PollWorkflowTaskQueueRequest`.
|
|
239
|
+
/// List of plugins used by lang.
|
|
168
240
|
#[builder(default)]
|
|
169
|
-
pub
|
|
241
|
+
pub plugins: HashSet<PluginInfo>,
|
|
242
|
+
|
|
243
|
+
/// Skips the single worker+client+namespace+task_queue check
|
|
244
|
+
#[builder(default = "false")]
|
|
245
|
+
pub skip_client_worker_set_check: bool,
|
|
170
246
|
}
|
|
171
247
|
|
|
172
248
|
impl WorkerConfig {
|
|
@@ -213,6 +289,18 @@ impl WorkerConfigBuilder {
|
|
|
213
289
|
}
|
|
214
290
|
|
|
215
291
|
fn validate(&self) -> Result<(), String> {
|
|
292
|
+
let task_types = self
|
|
293
|
+
.task_types
|
|
294
|
+
.as_ref()
|
|
295
|
+
.cloned()
|
|
296
|
+
.unwrap_or_else(WorkerTaskTypes::all);
|
|
297
|
+
if task_types.is_empty() {
|
|
298
|
+
return Err("At least one task type must be enabled in `task_types`".to_owned());
|
|
299
|
+
}
|
|
300
|
+
if !task_types.enable_workflows && task_types.enable_local_activities {
|
|
301
|
+
return Err("`task_types` cannot enable local activities without workflows".to_owned());
|
|
302
|
+
}
|
|
303
|
+
|
|
216
304
|
if let Some(b) = self.workflow_task_poller_behavior.as_ref() {
|
|
217
305
|
b.validate()?
|
|
218
306
|
}
|
|
@@ -363,6 +451,12 @@ pub trait SlotSupplier {
|
|
|
363
451
|
fn available_slots(&self) -> Option<usize> {
|
|
364
452
|
None
|
|
365
453
|
}
|
|
454
|
+
|
|
455
|
+
/// Returns a human-friendly identifier describing this supplier implementation for
|
|
456
|
+
/// diagnostics and telemetry.
|
|
457
|
+
fn slot_supplier_kind(&self) -> String {
|
|
458
|
+
"Custom".to_string()
|
|
459
|
+
}
|
|
366
460
|
}
|
|
367
461
|
|
|
368
462
|
pub trait SlotReservationContext: Send + Sync {
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
use temporalio_common::worker::{WorkerConfigBuilder, WorkerTaskTypes, WorkerVersioningStrategy};
|
|
2
|
+
|
|
3
|
+
fn default_versioning_strategy() -> WorkerVersioningStrategy {
|
|
4
|
+
WorkerVersioningStrategy::None {
|
|
5
|
+
build_id: String::new(),
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
#[test]
|
|
10
|
+
fn test_default_configuration_polls_all_types() {
|
|
11
|
+
let config = WorkerConfigBuilder::default()
|
|
12
|
+
.namespace("default")
|
|
13
|
+
.task_queue("test-queue")
|
|
14
|
+
.versioning_strategy(default_versioning_strategy())
|
|
15
|
+
.task_types(WorkerTaskTypes::all())
|
|
16
|
+
.build()
|
|
17
|
+
.expect("Failed to build default config");
|
|
18
|
+
|
|
19
|
+
let effective = &config.task_types;
|
|
20
|
+
assert!(
|
|
21
|
+
effective.enable_workflows,
|
|
22
|
+
"Should poll workflows by default"
|
|
23
|
+
);
|
|
24
|
+
assert!(
|
|
25
|
+
effective.enable_local_activities,
|
|
26
|
+
"should poll local activities by default"
|
|
27
|
+
);
|
|
28
|
+
assert!(
|
|
29
|
+
effective.enable_remote_activities,
|
|
30
|
+
"Should poll remote activities by default"
|
|
31
|
+
);
|
|
32
|
+
assert!(effective.enable_nexus, "Should poll nexus by default");
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
#[test]
|
|
36
|
+
fn test_invalid_task_types_fails_validation() {
|
|
37
|
+
// empty task types
|
|
38
|
+
let result = WorkerConfigBuilder::default()
|
|
39
|
+
.namespace("default")
|
|
40
|
+
.task_queue("test-queue")
|
|
41
|
+
.versioning_strategy(default_versioning_strategy())
|
|
42
|
+
.task_types(WorkerTaskTypes {
|
|
43
|
+
enable_workflows: false,
|
|
44
|
+
enable_local_activities: false,
|
|
45
|
+
enable_remote_activities: false,
|
|
46
|
+
enable_nexus: false,
|
|
47
|
+
})
|
|
48
|
+
.build();
|
|
49
|
+
|
|
50
|
+
assert!(result.is_err(), "Empty task_types should fail validation");
|
|
51
|
+
let err = result.err().unwrap().to_string();
|
|
52
|
+
assert!(
|
|
53
|
+
err.contains("At least one task type"),
|
|
54
|
+
"Error should mention task types: {err}",
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
// local activities with no workflows
|
|
58
|
+
let result = WorkerConfigBuilder::default()
|
|
59
|
+
.namespace("default")
|
|
60
|
+
.task_queue("test-queue")
|
|
61
|
+
.versioning_strategy(default_versioning_strategy())
|
|
62
|
+
.task_types(WorkerTaskTypes {
|
|
63
|
+
enable_workflows: false,
|
|
64
|
+
enable_local_activities: true,
|
|
65
|
+
enable_remote_activities: false,
|
|
66
|
+
enable_nexus: false,
|
|
67
|
+
})
|
|
68
|
+
.build();
|
|
69
|
+
|
|
70
|
+
assert!(result.is_err(), "Empty task_types should fail validation");
|
|
71
|
+
let err = result.err().unwrap().to_string();
|
|
72
|
+
assert!(
|
|
73
|
+
err.contains("cannot enable local activities without workflows"),
|
|
74
|
+
"Error should mention task types: {err}",
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
#[test]
|
|
79
|
+
fn test_all_combinations() {
|
|
80
|
+
let combinations = [
|
|
81
|
+
(WorkerTaskTypes::workflow_only(), "workflows only"),
|
|
82
|
+
(WorkerTaskTypes::activity_only(), "activities only"),
|
|
83
|
+
(WorkerTaskTypes::nexus_only(), "nexus only"),
|
|
84
|
+
(
|
|
85
|
+
WorkerTaskTypes {
|
|
86
|
+
enable_workflows: true,
|
|
87
|
+
enable_local_activities: true,
|
|
88
|
+
enable_remote_activities: true,
|
|
89
|
+
enable_nexus: false,
|
|
90
|
+
},
|
|
91
|
+
"workflows + activities",
|
|
92
|
+
),
|
|
93
|
+
(
|
|
94
|
+
WorkerTaskTypes {
|
|
95
|
+
enable_workflows: true,
|
|
96
|
+
enable_local_activities: true,
|
|
97
|
+
enable_remote_activities: false,
|
|
98
|
+
enable_nexus: true,
|
|
99
|
+
},
|
|
100
|
+
"workflows + nexus",
|
|
101
|
+
),
|
|
102
|
+
(
|
|
103
|
+
WorkerTaskTypes {
|
|
104
|
+
enable_workflows: false,
|
|
105
|
+
enable_local_activities: false,
|
|
106
|
+
enable_remote_activities: true,
|
|
107
|
+
enable_nexus: true,
|
|
108
|
+
},
|
|
109
|
+
"activities + nexus",
|
|
110
|
+
),
|
|
111
|
+
(WorkerTaskTypes::all(), "all types"),
|
|
112
|
+
];
|
|
113
|
+
|
|
114
|
+
for (task_types, description) in combinations {
|
|
115
|
+
let config = WorkerConfigBuilder::default()
|
|
116
|
+
.namespace("default")
|
|
117
|
+
.task_queue("test-queue")
|
|
118
|
+
.versioning_strategy(default_versioning_strategy())
|
|
119
|
+
.task_types(task_types)
|
|
120
|
+
.build()
|
|
121
|
+
.unwrap_or_else(|e| panic!("Failed to build config for {description}: {e:?}"));
|
|
122
|
+
|
|
123
|
+
let effective = config.task_types;
|
|
124
|
+
assert_eq!(
|
|
125
|
+
effective, task_types,
|
|
126
|
+
"Effective types should match for {description}",
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "temporalio-macros"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
edition = "2024"
|
|
5
|
+
authors = ["Temporal Technologies Inc. <sdk@temporal.io>"]
|
|
6
|
+
license-file = { workspace = true }
|
|
7
|
+
description = "Procmacros used in Temporal Core & Rust SDKs"
|
|
8
|
+
|
|
9
|
+
[lib]
|
|
10
|
+
proc-macro = true
|
|
11
|
+
|
|
12
|
+
[dependencies]
|
|
13
|
+
derive_more = { workspace = true }
|
|
14
|
+
proc-macro2 = "1.0"
|
|
15
|
+
syn = { version = "2.0", features = ["default", "extra-traits"] }
|
|
16
|
+
quote = "1.0"
|
|
17
|
+
|
|
18
|
+
[dev-dependencies]
|
|
19
|
+
# This is to enable doctests for the macros
|
|
20
|
+
temporalio-common = { path = "../common" }
|
|
21
|
+
|
|
22
|
+
[package.metadata.workspaces]
|
|
23
|
+
independent = true
|
|
@@ -13,10 +13,9 @@ use syn::{
|
|
|
13
13
|
///
|
|
14
14
|
/// An example state machine definition of a card reader for unlocking a door:
|
|
15
15
|
/// ```
|
|
16
|
-
///
|
|
17
|
-
/// use rustfsm_procmacro::fsm;
|
|
16
|
+
/// use temporalio_macros::fsm;
|
|
18
17
|
/// use std::convert::Infallible;
|
|
19
|
-
/// use
|
|
18
|
+
/// use temporalio_common::fsm_trait::{StateMachine, TransitionResult};
|
|
20
19
|
///
|
|
21
20
|
/// fsm! {
|
|
22
21
|
/// name CardReader; command Commands; error Infallible; shared_state SharedState;
|
|
@@ -434,6 +433,7 @@ impl StateMachineDefinition {
|
|
|
434
433
|
}
|
|
435
434
|
};
|
|
436
435
|
let mut multi_dest_enums = vec![];
|
|
436
|
+
let mut multi_dest_enum_names = HashSet::new();
|
|
437
437
|
let state_branches: Vec<_> = statemap.into_iter().map(|(from, transitions)| {
|
|
438
438
|
let occupied_current_state = quote! { Some(#state_enum_name::#from(state_data)) };
|
|
439
439
|
// Merge transition dest states with the same handler
|
|
@@ -468,7 +468,11 @@ impl StateMachineDefinition {
|
|
|
468
468
|
}
|
|
469
469
|
}
|
|
470
470
|
};
|
|
471
|
-
|
|
471
|
+
// Deduplicate; two different events may each result in a transition
|
|
472
|
+
// set with the same set of dest states
|
|
473
|
+
if multi_dest_enum_names.insert(enum_ident.clone()) {
|
|
474
|
+
multi_dest_enums.push(multi_dest_enum);
|
|
475
|
+
}
|
|
472
476
|
quote! {
|
|
473
477
|
#transition_result_name<#enum_ident>
|
|
474
478
|
}
|
|
@@ -538,7 +542,7 @@ impl StateMachineDefinition {
|
|
|
538
542
|
quote! { _ => {
|
|
539
543
|
// Restore state in event the transition doesn't match
|
|
540
544
|
self.state = #occupied_current_state;
|
|
541
|
-
return Err(::
|
|
545
|
+
return Err(::temporalio_common::fsm_trait::MachineError::InvalidTransition)
|
|
542
546
|
} },
|
|
543
547
|
));
|
|
544
548
|
quote! {
|
|
@@ -548,14 +552,14 @@ impl StateMachineDefinition {
|
|
|
548
552
|
}
|
|
549
553
|
}).chain(std::iter::once(
|
|
550
554
|
quote! {
|
|
551
|
-
None => Err(::
|
|
555
|
+
None => Err(::temporalio_common::fsm_trait::MachineError::InvalidTransition)
|
|
552
556
|
}
|
|
553
557
|
)).collect();
|
|
554
558
|
|
|
555
559
|
let viz_str = self.visualize();
|
|
556
560
|
|
|
557
561
|
let trait_impl = quote! {
|
|
558
|
-
impl ::
|
|
562
|
+
impl ::temporalio_common::fsm_trait::StateMachine for #name {
|
|
559
563
|
type Error = #err_type;
|
|
560
564
|
type State = #state_enum_name;
|
|
561
565
|
type SharedState = #shared_state_type;
|
|
@@ -568,7 +572,7 @@ impl StateMachineDefinition {
|
|
|
568
572
|
|
|
569
573
|
fn on_event(&mut self, event: #events_enum_name)
|
|
570
574
|
-> ::core::result::Result<::std::vec::Vec<Self::Command>,
|
|
571
|
-
::
|
|
575
|
+
::temporalio_common::fsm_trait::MachineError<Self::Error>> {
|
|
572
576
|
let taken_state = self.state.take();
|
|
573
577
|
match taken_state {
|
|
574
578
|
#(#state_branches),*
|
|
@@ -579,10 +583,6 @@ impl StateMachineDefinition {
|
|
|
579
583
|
self.state.as_ref().unwrap()
|
|
580
584
|
}
|
|
581
585
|
|
|
582
|
-
fn set_state(&mut self, new: Self::State) {
|
|
583
|
-
self.state = Some(new)
|
|
584
|
-
}
|
|
585
|
-
|
|
586
586
|
fn shared_state(&self) -> &Self::SharedState{
|
|
587
587
|
&self.shared_state
|
|
588
588
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
[package]
|
|
2
|
-
name = "
|
|
2
|
+
name = "temporalio-sdk"
|
|
3
3
|
version = "0.1.0-alpha.1"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
authors = ["Spencer Judge <spencer@temporal.io>"]
|
|
@@ -16,29 +16,35 @@ anyhow = "1.0"
|
|
|
16
16
|
derive_more = { workspace = true }
|
|
17
17
|
futures-util = { version = "0.3", default-features = false }
|
|
18
18
|
parking_lot = { version = "0.12", features = ["send_guard"] }
|
|
19
|
-
prost-types = {
|
|
19
|
+
prost-types = { workspace = true }
|
|
20
20
|
serde = "1.0"
|
|
21
|
-
tokio = { version = "1.
|
|
21
|
+
tokio = { version = "1.47", features = [
|
|
22
|
+
"rt",
|
|
23
|
+
"rt-multi-thread",
|
|
24
|
+
"parking_lot",
|
|
25
|
+
"time",
|
|
26
|
+
"fs",
|
|
27
|
+
] }
|
|
22
28
|
tokio-util = { version = "0.7" }
|
|
23
29
|
tokio-stream = "0.1"
|
|
24
30
|
tracing = "0.1"
|
|
25
31
|
|
|
26
|
-
[dependencies.
|
|
27
|
-
path = "../core"
|
|
32
|
+
[dependencies.temporalio-sdk-core]
|
|
33
|
+
path = "../sdk-core"
|
|
28
34
|
version = "0.1"
|
|
29
35
|
default-features = false
|
|
30
36
|
|
|
31
|
-
[dependencies.
|
|
32
|
-
path = "../
|
|
37
|
+
[dependencies.temporalio-common]
|
|
38
|
+
path = "../common"
|
|
33
39
|
version = "0.1"
|
|
34
40
|
|
|
35
|
-
[dependencies.
|
|
36
|
-
path = "../core-api"
|
|
37
|
-
version = "0.1"
|
|
38
|
-
|
|
39
|
-
[dependencies.temporal-client]
|
|
41
|
+
[dependencies.temporalio-client]
|
|
40
42
|
path = "../client"
|
|
41
43
|
version = "0.1"
|
|
42
44
|
|
|
45
|
+
[features]
|
|
46
|
+
default = []
|
|
47
|
+
antithesis_assertions = ["temporalio-sdk-core/antithesis_assertions"]
|
|
48
|
+
|
|
43
49
|
[lints]
|
|
44
50
|
workspace = true
|
|
@@ -6,12 +6,14 @@ use std::{
|
|
|
6
6
|
sync::Arc,
|
|
7
7
|
time::{Duration as StdDuration, SystemTime},
|
|
8
8
|
};
|
|
9
|
-
use
|
|
10
|
-
use
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
use temporalio_client::Priority;
|
|
10
|
+
use temporalio_common::{
|
|
11
|
+
Worker,
|
|
12
|
+
protos::{
|
|
13
|
+
coresdk::{ActivityHeartbeat, activity_task},
|
|
14
|
+
temporal::api::common::v1::{Payload, RetryPolicy, WorkflowExecution},
|
|
15
|
+
utilities::TryIntoOrNone,
|
|
16
|
+
},
|
|
15
17
|
};
|
|
16
18
|
use tokio_util::sync::CancellationToken;
|
|
17
19
|
|
|
@@ -56,7 +58,7 @@ pub struct ActivityInfo {
|
|
|
56
58
|
impl ActContext {
|
|
57
59
|
/// Construct new Activity Context, returning the context and the first argument to the activity
|
|
58
60
|
/// (which may be a default [Payload]).
|
|
59
|
-
pub
|
|
61
|
+
pub fn new(
|
|
60
62
|
worker: Arc<dyn Worker>,
|
|
61
63
|
app_data: Arc<AppData>,
|
|
62
64
|
cancellation_token: CancellationToken,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
use crate::Worker;
|
|
4
4
|
use anyhow::bail;
|
|
5
5
|
use std::sync::{Arc, OnceLock};
|
|
6
|
-
use
|
|
6
|
+
use temporalio_common::protos::{
|
|
7
7
|
coresdk::{
|
|
8
8
|
workflow_activation::{WorkflowActivation, remove_from_cache::EvictionReason},
|
|
9
9
|
workflow_completion::WorkflowActivationCompletion,
|
|
@@ -88,10 +88,7 @@ impl WorkerInterceptor for FailOnNondeterminismInterceptor {
|
|
|
88
88
|
activation.eviction_reason(),
|
|
89
89
|
Some(EvictionReason::Nondeterminism)
|
|
90
90
|
) {
|
|
91
|
-
bail!(
|
|
92
|
-
"Workflow is being evicted because of nondeterminism! {}",
|
|
93
|
-
activation
|
|
94
|
-
);
|
|
91
|
+
bail!("Workflow is being evicted because of nondeterminism! {activation}");
|
|
95
92
|
}
|
|
96
93
|
Ok(())
|
|
97
94
|
}
|