@temporalio/core-bridge 1.13.2 → 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 +135 -100
- package/Cargo.toml +3 -2
- package/{sdk-core/fsm/rustfsm_trait/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 +13 -6
- 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 +9 -3
- package/sdk-core/.github/workflows/per-pr.yml +42 -5
- package/sdk-core/AGENTS.md +17 -19
- package/sdk-core/Cargo.toml +6 -7
- package/sdk-core/README.md +12 -15
- package/sdk-core/arch_docs/diagrams/deps.svg +102 -0
- package/sdk-core/{client → crates/client}/Cargo.toml +7 -9
- package/sdk-core/{client → crates/client}/src/lib.rs +110 -159
- package/sdk-core/{client → crates/client}/src/metrics.rs +1 -1
- package/sdk-core/{client → crates/client}/src/raw.rs +73 -44
- package/sdk-core/crates/client/src/request_extensions.rs +40 -0
- package/sdk-core/{client → crates/client}/src/retry.rs +24 -17
- package/sdk-core/crates/client/src/worker/mod.rs +1468 -0
- package/sdk-core/{client → crates/client}/src/workflow_handle/mod.rs +4 -4
- package/sdk-core/{core-api → crates/common}/Cargo.toml +17 -8
- 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 +5 -0
- package/sdk-core/{core-api → crates/common}/src/envconfig.rs +2 -2
- 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 +24 -9
- package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/canned_histories.rs +1 -1
- package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/history_builder.rs +1 -1
- 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} +18 -17
- package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/test_utils.rs +1 -1
- package/sdk-core/{core-api → crates/common}/src/telemetry/metrics.rs +447 -50
- package/sdk-core/{core-api → crates/common}/src/telemetry.rs +3 -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 +6 -11
- package/sdk-core/{sdk → crates/sdk}/Cargo.toml +10 -10
- package/sdk-core/{sdk → crates/sdk}/src/activity_context.rs +8 -6
- package/sdk-core/{sdk → crates/sdk}/src/interceptors.rs +1 -1
- package/sdk-core/{sdk → crates/sdk}/src/lib.rs +42 -37
- package/sdk-core/{sdk → crates/sdk}/src/workflow_context/options.rs +2 -2
- package/sdk-core/{sdk → crates/sdk}/src/workflow_context.rs +21 -19
- package/sdk-core/{sdk → crates/sdk}/src/workflow_future.rs +1 -1
- package/sdk-core/{core → crates/sdk-core}/Cargo.toml +32 -25
- package/sdk-core/{tests → crates/sdk-core/benches}/workflow_replay_bench.rs +10 -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 +36 -31
- package/sdk-core/{core → crates/sdk-core}/src/core_tests/mod.rs +12 -9
- package/sdk-core/{core → crates/sdk-core}/src/core_tests/queries.rs +24 -21
- package/sdk-core/{core → crates/sdk-core}/src/core_tests/replay_flag.rs +10 -8
- package/sdk-core/{core → crates/sdk-core}/src/core_tests/updates.rs +17 -15
- package/sdk-core/{core → crates/sdk-core}/src/core_tests/workers.rs +242 -17
- package/sdk-core/{core → crates/sdk-core}/src/core_tests/workflow_cancels.rs +1 -1
- package/sdk-core/{core → crates/sdk-core}/src/core_tests/workflow_tasks.rs +126 -39
- 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 +3 -3
- package/sdk-core/crates/sdk-core/src/histfetch.rs +33 -0
- package/sdk-core/{core → crates/sdk-core}/src/internal_flags.rs +4 -3
- package/sdk-core/{core → crates/sdk-core}/src/lib.rs +85 -43
- package/sdk-core/{core → crates/sdk-core}/src/pollers/mod.rs +8 -6
- package/sdk-core/{core → crates/sdk-core}/src/pollers/poll_buffer.rs +51 -16
- package/sdk-core/{core → crates/sdk-core}/src/protosext/mod.rs +1 -1
- package/sdk-core/{core → crates/sdk-core}/src/protosext/protocol_messages.rs +1 -1
- package/sdk-core/{core → crates/sdk-core}/src/replay/mod.rs +14 -11
- package/sdk-core/{core → crates/sdk-core}/src/retry_logic.rs +19 -1
- 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 -34
- package/sdk-core/{core → crates/sdk-core}/src/telemetry/mod.rs +4 -4
- 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 +13 -13
- package/sdk-core/{core → crates/sdk-core}/src/telemetry/prometheus_server.rs +2 -2
- package/sdk-core/{core → crates/sdk-core}/src/test_help/integ_helpers.rs +127 -40
- package/sdk-core/{core → crates/sdk-core}/src/test_help/unit_helpers.rs +13 -11
- package/sdk-core/{core → crates/sdk-core}/src/worker/activities/activity_heartbeat_manager.rs +2 -2
- package/sdk-core/{core → crates/sdk-core}/src/worker/activities/local_activities.rs +14 -12
- package/sdk-core/{core → crates/sdk-core}/src/worker/activities.rs +21 -12
- package/sdk-core/{core → crates/sdk-core}/src/worker/client/mocks.rs +25 -12
- package/sdk-core/{core → crates/sdk-core}/src/worker/client.rs +164 -71
- 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 +15 -14
- package/sdk-core/{core → crates/sdk-core}/src/worker/slot_provider.rs +12 -13
- 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 +21 -4
- 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 +2 -2
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/activity_state_machine.rs +147 -37
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/cancel_external_state_machine.rs +8 -9
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/cancel_nexus_op_state_machine.rs +14 -12
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/cancel_workflow_state_machine.rs +6 -7
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/child_workflow_state_machine.rs +31 -37
- 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 -7
- 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 +33 -30
- 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 -3
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/nexus_operation_state_machine.rs +20 -22
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/patch_state_machine.rs +12 -11
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/signal_external_state_machine.rs +9 -12
- package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/timer_state_machine.rs +26 -13
- 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 +20 -18
- 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 +61 -70
- 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 +166 -60
- 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 +30 -16
- package/sdk-core/{tests → crates/sdk-core/tests}/c_bridge_smoke_test.c +1 -1
- package/sdk-core/{tests → crates/sdk-core/tests}/cloud_tests.rs +1 -1
- package/sdk-core/crates/sdk-core/tests/common/fake_grpc_server.rs +106 -0
- package/sdk-core/{tests → crates/sdk-core/tests}/common/http_proxy.rs +1 -1
- package/sdk-core/{tests → crates/sdk-core/tests}/common/mod.rs +93 -74
- package/sdk-core/{tests → crates/sdk-core/tests}/common/workflows.rs +4 -3
- 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 +14 -15
- package/sdk-core/{tests → crates/sdk-core/tests/heavy_tests}/fuzzy_workflow.rs +3 -3
- package/sdk-core/{tests → crates/sdk-core/tests}/heavy_tests.rs +19 -12
- 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 +16 -111
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/ephemeral_server_tests.rs +5 -6
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/heartbeat_tests.rs +23 -19
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/metrics_tests.rs +134 -60
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/pagination_tests.rs +4 -4
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/polling_tests.rs +37 -36
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/queries_tests.rs +12 -10
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/update_tests.rs +41 -29
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/visibility_tests.rs +24 -19
- package/sdk-core/crates/sdk-core/tests/integ_tests/worker_heartbeat_tests.rs +1061 -0
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/worker_tests.rs +113 -51
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/worker_versioning_tests.rs +19 -17
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/activities.rs +35 -30
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/appdata_propagation.rs +3 -3
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/cancel_external.rs +14 -9
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/cancel_wf.rs +13 -8
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/child_workflows.rs +48 -35
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/continue_as_new.rs +14 -9
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/determinism.rs +24 -15
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/eager.rs +9 -4
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/local_activities.rs +47 -47
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/modify_wf_properties.rs +16 -11
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/nexus.rs +51 -23
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/patches.rs +22 -10
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/replay.rs +19 -17
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/resets.rs +14 -5
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/signals.rs +24 -15
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/stickyness.rs +8 -6
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/timers.rs +28 -18
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/upsert_search_attrs.rs +18 -13
- package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests.rs +46 -41
- package/sdk-core/{tests → crates/sdk-core/tests}/main.rs +15 -9
- package/sdk-core/{tests → crates/sdk-core/tests}/manual_tests.rs +20 -14
- package/sdk-core/{tests → crates/sdk-core/tests}/runner.rs +2 -2
- package/sdk-core/{tests → crates/sdk-core/tests}/shared_tests/mod.rs +10 -5
- package/sdk-core/{tests → crates/sdk-core/tests}/shared_tests/priority.rs +5 -5
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/Cargo.toml +13 -10
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/include/temporal-sdk-core-c-bridge.h +32 -23
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/client.rs +55 -32
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/envconfig.rs +1 -1
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/lib.rs +1 -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/runtime.rs +24 -9
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/testing.rs +1 -1
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/tests/context.rs +11 -10
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/tests/mod.rs +7 -7
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/tests/utils.rs +3 -4
- package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/worker.rs +111 -58
- 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 +24 -33
- package/src/helpers/try_from_js.rs +1 -1
- package/src/logs.rs +1 -1
- package/src/metrics.rs +3 -3
- package/src/runtime.rs +42 -28
- package/src/testing.rs +3 -3
- package/src/worker.rs +70 -36
- package/ts/native.ts +13 -6
- package/LICENSE.md +0 -23
- package/sdk-core/client/src/worker_registry/mod.rs +0 -282
- package/sdk-core/core/src/worker/heartbeat.rs +0 -230
- package/sdk-core/core/src/worker/mod.rs +0 -990
- 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/LICENSE.txt +0 -21
- 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/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/{client → crates/client}/src/callback_based.rs +0 -0
- /package/sdk-core/{client → crates/client}/src/proxy.rs +0 -0
- /package/sdk-core/{client → crates/client}/src/replaceable.rs +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/build.rs +0 -0
- /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/openapiv2.json +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/openapi/openapiv3.yaml +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/common/v1/message.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/deployment/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/namespace/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/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -0
- /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/workflowservice/v1/service.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_activation/workflow_activation.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/{sdk-core-protos/src → crates/common/src/protos}/utilities.rs +0 -0
- /package/sdk-core/{fsm → crates/macros}/LICENSE.txt +0 -0
- /package/sdk-core/{sdk → crates/sdk}/src/app_data.rs +0 -0
- /package/sdk-core/{core → crates/sdk-core}/src/abstractions/take_cell.rs +0 -0
- /package/sdk-core/{core → crates/sdk-core}/src/test_help/mod.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/{core-c-bridge → crates/sdk-core-c-bridge}/src/random.rs +0 -0
- /package/sdk-core/{cargo-tokio-console.sh → etc/cargo-tokio-console.sh} +0 -0
|
@@ -3,12 +3,14 @@ mod resource_based;
|
|
|
3
3
|
|
|
4
4
|
pub use fixed_size::FixedSizeSlotSupplier;
|
|
5
5
|
pub use resource_based::{
|
|
6
|
-
|
|
6
|
+
ResourceBasedSlotsOptions, ResourceBasedSlotsOptionsBuilder, ResourceBasedTuner,
|
|
7
7
|
ResourceSlotOptions,
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
+
pub(crate) use resource_based::{RealSysInfo, SystemResourceInfo};
|
|
11
|
+
|
|
10
12
|
use std::sync::Arc;
|
|
11
|
-
use
|
|
13
|
+
use temporalio_common::worker::{
|
|
12
14
|
ActivitySlotKind, LocalActivitySlotKind, NexusSlotKind, SlotKind, SlotSupplier, WorkerConfig,
|
|
13
15
|
WorkerTuner, WorkflowSlotKind,
|
|
14
16
|
};
|
|
@@ -126,6 +128,9 @@ impl TunerHolderOptions {
|
|
|
126
128
|
}
|
|
127
129
|
None => {}
|
|
128
130
|
}
|
|
131
|
+
if let Some(tuner) = rb_tuner {
|
|
132
|
+
builder.sys_info(tuner.sys_info());
|
|
133
|
+
}
|
|
129
134
|
Ok(builder.build())
|
|
130
135
|
}
|
|
131
136
|
}
|
|
@@ -138,7 +143,7 @@ pub enum SlotSupplierOptions<SK: SlotKind> {
|
|
|
138
143
|
/// The number of slots the fixed supplier will have
|
|
139
144
|
slots: usize,
|
|
140
145
|
},
|
|
141
|
-
/// Options for
|
|
146
|
+
/// Options for resource-based slot suppliers
|
|
142
147
|
ResourceBased(ResourceSlotOptions),
|
|
143
148
|
/// A user-implemented slot supplier
|
|
144
149
|
#[debug("Custom")]
|
|
@@ -187,6 +192,7 @@ pub struct TunerBuilder {
|
|
|
187
192
|
local_activity_slot_supplier:
|
|
188
193
|
Option<Arc<dyn SlotSupplier<SlotKind = LocalActivitySlotKind> + Send + Sync>>,
|
|
189
194
|
nexus_slot_supplier: Option<Arc<dyn SlotSupplier<SlotKind = NexusSlotKind> + Send + Sync>>,
|
|
195
|
+
sys_info: Option<Arc<dyn SystemResourceInfo + Send + Sync>>,
|
|
190
196
|
}
|
|
191
197
|
|
|
192
198
|
impl TunerBuilder {
|
|
@@ -243,6 +249,17 @@ impl TunerBuilder {
|
|
|
243
249
|
self
|
|
244
250
|
}
|
|
245
251
|
|
|
252
|
+
/// Sets a field that implements [SystemResourceInfo]
|
|
253
|
+
fn sys_info(&mut self, sys_info: Arc<dyn SystemResourceInfo + Send + Sync>) -> &mut Self {
|
|
254
|
+
self.sys_info = Some(sys_info);
|
|
255
|
+
self
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/// Gets the field that implements [SystemResourceInfo]
|
|
259
|
+
pub(crate) fn get_sys_info(&self) -> Option<Arc<dyn SystemResourceInfo + Send + Sync>> {
|
|
260
|
+
self.sys_info.clone()
|
|
261
|
+
}
|
|
262
|
+
|
|
246
263
|
/// Build a [WorkerTuner] from the configured slot suppliers
|
|
247
264
|
pub fn build(&mut self) -> TunerHolder {
|
|
248
265
|
TunerHolder {
|
|
@@ -296,7 +313,7 @@ impl WorkerTuner for TunerHolder {
|
|
|
296
313
|
mod tests {
|
|
297
314
|
use super::*;
|
|
298
315
|
use std::time::Duration;
|
|
299
|
-
use
|
|
316
|
+
use temporalio_common::worker::{
|
|
300
317
|
SlotMarkUsedContext, SlotReleaseContext, SlotReservationContext, SlotSupplierPermit,
|
|
301
318
|
};
|
|
302
319
|
|
|
@@ -7,7 +7,7 @@ use std::{
|
|
|
7
7
|
collections::HashMap,
|
|
8
8
|
sync::mpsc::{self, Receiver, Sender},
|
|
9
9
|
};
|
|
10
|
-
use
|
|
10
|
+
use temporalio_common::protos::{
|
|
11
11
|
coresdk::workflow_activation::{WorkflowActivationJob, start_workflow_from_attribs},
|
|
12
12
|
temporal::api::{common::v1::Payload, history::v1::WorkflowExecutionStartedEventAttributes},
|
|
13
13
|
utilities::TryIntoOrNone,
|
|
@@ -17,7 +17,7 @@ use std::{
|
|
|
17
17
|
sync::{Arc, LazyLock},
|
|
18
18
|
task::{Context, Poll},
|
|
19
19
|
};
|
|
20
|
-
use
|
|
20
|
+
use temporalio_common::protos::temporal::api::{
|
|
21
21
|
enums::v1::EventType,
|
|
22
22
|
history::v1::{
|
|
23
23
|
History, HistoryEvent, WorkflowTaskCompletedEventAttributes, history_event::Attributes,
|
|
@@ -810,7 +810,7 @@ mod tests {
|
|
|
810
810
|
worker::client::mocks::mock_worker_client,
|
|
811
811
|
};
|
|
812
812
|
use futures_util::TryStreamExt;
|
|
813
|
-
use
|
|
813
|
+
use temporalio_common::protos::{
|
|
814
814
|
canned_histories,
|
|
815
815
|
temporal::api::{
|
|
816
816
|
common::v1::WorkflowExecution, enums::v1::WorkflowTaskFailedCause,
|
package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/activity_state_machine.rs
RENAMED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
#![allow(clippy::large_enum_variant)]
|
|
2
2
|
|
|
3
3
|
use super::{
|
|
4
|
-
EventInfo, NewMachineWithCommand, OnEventWrapper,
|
|
5
|
-
workflow_machines::MachineResponse,
|
|
4
|
+
EventInfo, MachineError, NewMachineWithCommand, OnEventWrapper, StateMachine, TransitionResult,
|
|
5
|
+
WFMachinesAdapter, WFMachinesError, workflow_machines::MachineResponse,
|
|
6
6
|
};
|
|
7
7
|
use crate::{
|
|
8
8
|
abstractions::dbg_panic,
|
|
9
9
|
internal_flags::CoreInternalFlags,
|
|
10
|
-
worker::workflow::{InternalFlagsRef, machines::HistEventData},
|
|
10
|
+
worker::workflow::{InternalFlagsRef, fatal, machines::HistEventData, nondeterminism},
|
|
11
11
|
};
|
|
12
|
-
use rustfsm::{MachineError, StateMachine, TransitionResult, fsm};
|
|
13
12
|
use std::convert::{TryFrom, TryInto};
|
|
14
|
-
use
|
|
13
|
+
use temporalio_common::protos::{
|
|
15
14
|
coresdk::{
|
|
16
15
|
activity_result::{self as ar, ActivityResolution, Cancellation, activity_resolution},
|
|
17
16
|
workflow_activation::ResolveActivity,
|
|
@@ -31,6 +30,7 @@ use temporal_sdk_core_protos::{
|
|
|
31
30
|
},
|
|
32
31
|
},
|
|
33
32
|
};
|
|
33
|
+
use temporalio_macros::fsm;
|
|
34
34
|
|
|
35
35
|
fsm! {
|
|
36
36
|
pub(super) name ActivityMachine;
|
|
@@ -173,6 +173,16 @@ impl ActivityMachine {
|
|
|
173
173
|
| ActivityMachineState::TimedOut(_)
|
|
174
174
|
) {
|
|
175
175
|
// Ignore attempted cancels in terminal states
|
|
176
|
+
#[cfg(feature = "antithesis_assertions")]
|
|
177
|
+
crate::antithesis::assert_always!(
|
|
178
|
+
true,
|
|
179
|
+
"Activity cancel ignored in terminal state",
|
|
180
|
+
::serde_json::json!({
|
|
181
|
+
"seq": self.shared_state.attrs.seq,
|
|
182
|
+
"state": format!("{}", self.state())
|
|
183
|
+
})
|
|
184
|
+
);
|
|
185
|
+
|
|
176
186
|
debug!(
|
|
177
187
|
"Attempted to cancel already resolved activity (seq {})",
|
|
178
188
|
self.shared_state.attrs.seq
|
|
@@ -193,7 +203,10 @@ impl ActivityMachine {
|
|
|
193
203
|
ActivityMachineCommand::Cancel(details) => {
|
|
194
204
|
vec![self.create_cancelation_resolve(details).into()]
|
|
195
205
|
}
|
|
196
|
-
x =>
|
|
206
|
+
x => {
|
|
207
|
+
dbg_panic!("Invalid cancel event response {x:?}");
|
|
208
|
+
panic!("Invalid cancel event response {x:?}");
|
|
209
|
+
}
|
|
197
210
|
})
|
|
198
211
|
.collect();
|
|
199
212
|
Ok(res)
|
|
@@ -223,9 +236,7 @@ impl TryFrom<HistEventData> for ActivityMachineEvents {
|
|
|
223
236
|
last_task_in_history,
|
|
224
237
|
})
|
|
225
238
|
} else {
|
|
226
|
-
return Err(
|
|
227
|
-
"Activity scheduled attributes were unset: {e}"
|
|
228
|
-
)));
|
|
239
|
+
return Err(fatal!("Activity scheduled attributes were unset: {e}"));
|
|
229
240
|
}
|
|
230
241
|
}
|
|
231
242
|
EventType::ActivityTaskStarted => Self::ActivityTaskStarted(e.event_id),
|
|
@@ -236,9 +247,7 @@ impl TryFrom<HistEventData> for ActivityMachineEvents {
|
|
|
236
247
|
{
|
|
237
248
|
Self::ActivityTaskCompleted(attrs)
|
|
238
249
|
} else {
|
|
239
|
-
return Err(
|
|
240
|
-
"Activity completion attributes were unset: {e}"
|
|
241
|
-
)));
|
|
250
|
+
return Err(fatal!("Activity completion attributes were unset: {e}"));
|
|
242
251
|
}
|
|
243
252
|
}
|
|
244
253
|
EventType::ActivityTaskFailed => {
|
|
@@ -247,9 +256,7 @@ impl TryFrom<HistEventData> for ActivityMachineEvents {
|
|
|
247
256
|
{
|
|
248
257
|
Self::ActivityTaskFailed(attrs)
|
|
249
258
|
} else {
|
|
250
|
-
return Err(
|
|
251
|
-
"Activity failure attributes were unset: {e}"
|
|
252
|
-
)));
|
|
259
|
+
return Err(fatal!("Activity failure attributes were unset: {e}"));
|
|
253
260
|
}
|
|
254
261
|
}
|
|
255
262
|
EventType::ActivityTaskTimedOut => {
|
|
@@ -258,9 +265,7 @@ impl TryFrom<HistEventData> for ActivityMachineEvents {
|
|
|
258
265
|
{
|
|
259
266
|
Self::ActivityTaskTimedOut(attrs)
|
|
260
267
|
} else {
|
|
261
|
-
return Err(
|
|
262
|
-
"Activity timeout attributes were unset: {e}"
|
|
263
|
-
)));
|
|
268
|
+
return Err(fatal!("Activity timeout attributes were unset: {e}"));
|
|
264
269
|
}
|
|
265
270
|
}
|
|
266
271
|
EventType::ActivityTaskCancelRequested => Self::ActivityTaskCancelRequested,
|
|
@@ -270,15 +275,13 @@ impl TryFrom<HistEventData> for ActivityMachineEvents {
|
|
|
270
275
|
{
|
|
271
276
|
Self::ActivityTaskCanceled(attrs)
|
|
272
277
|
} else {
|
|
273
|
-
return Err(
|
|
274
|
-
"Activity cancellation attributes were unset: {e}"
|
|
275
|
-
)));
|
|
278
|
+
return Err(fatal!("Activity cancellation attributes were unset: {e}"));
|
|
276
279
|
}
|
|
277
280
|
}
|
|
278
281
|
_ => {
|
|
279
|
-
return Err(
|
|
282
|
+
return Err(nondeterminism!(
|
|
280
283
|
"Activity machine does not handle this event: {e}"
|
|
281
|
-
))
|
|
284
|
+
));
|
|
282
285
|
}
|
|
283
286
|
})
|
|
284
287
|
}
|
|
@@ -375,18 +378,20 @@ impl ScheduleCommandCreated {
|
|
|
375
378
|
sched_dat.last_task_in_history,
|
|
376
379
|
) {
|
|
377
380
|
if sched_dat.act_id != dat.attrs.activity_id {
|
|
378
|
-
return TransitionResult::Err(
|
|
381
|
+
return TransitionResult::Err(nondeterminism!(
|
|
379
382
|
"Activity id of scheduled event '{}' does not \
|
|
380
383
|
match activity id of activity command '{}'",
|
|
381
|
-
sched_dat.act_id,
|
|
382
|
-
|
|
384
|
+
sched_dat.act_id,
|
|
385
|
+
dat.attrs.activity_id
|
|
386
|
+
));
|
|
383
387
|
}
|
|
384
388
|
if sched_dat.act_type != dat.attrs.activity_type {
|
|
385
|
-
return TransitionResult::Err(
|
|
389
|
+
return TransitionResult::Err(nondeterminism!(
|
|
386
390
|
"Activity type of scheduled event '{}' does not \
|
|
387
391
|
match activity type of activity command '{}'",
|
|
388
|
-
sched_dat.act_type,
|
|
389
|
-
|
|
392
|
+
sched_dat.act_type,
|
|
393
|
+
dat.attrs.activity_type
|
|
394
|
+
));
|
|
390
395
|
}
|
|
391
396
|
}
|
|
392
397
|
dat.scheduled_event_id = sched_dat.event_id;
|
|
@@ -427,6 +432,15 @@ impl ScheduledEventRecorded {
|
|
|
427
432
|
dat: &mut SharedState,
|
|
428
433
|
attrs: ActivityTaskTimedOutEventAttributes,
|
|
429
434
|
) -> ActivityMachineTransition<TimedOut> {
|
|
435
|
+
#[cfg(feature = "antithesis_assertions")]
|
|
436
|
+
crate::antithesis::assert_sometimes!(
|
|
437
|
+
true,
|
|
438
|
+
"Activity timed out before starting",
|
|
439
|
+
::serde_json::json!({
|
|
440
|
+
"activity_id": dat.attrs.activity_id,
|
|
441
|
+
"state": "ScheduledEventRecorded"
|
|
442
|
+
})
|
|
443
|
+
);
|
|
430
444
|
notify_lang_activity_timed_out(dat, attrs)
|
|
431
445
|
}
|
|
432
446
|
|
|
@@ -434,12 +448,27 @@ impl ScheduledEventRecorded {
|
|
|
434
448
|
self,
|
|
435
449
|
dat: &mut SharedState,
|
|
436
450
|
) -> ActivityMachineTransition<ScheduledActivityCancelCommandCreated> {
|
|
451
|
+
#[cfg(feature = "antithesis_assertions")]
|
|
452
|
+
crate::antithesis::assert_sometimes!(
|
|
453
|
+
true,
|
|
454
|
+
"Activity cancelled in scheduled state",
|
|
455
|
+
::serde_json::json!({
|
|
456
|
+
"activity_id": dat.attrs.activity_id,
|
|
457
|
+
"cancellation_type": format!("{:?}", dat.cancellation_type)
|
|
458
|
+
})
|
|
459
|
+
);
|
|
437
460
|
create_request_cancel_activity_task_command(
|
|
438
461
|
dat,
|
|
439
462
|
ScheduledActivityCancelCommandCreated::default(),
|
|
440
463
|
)
|
|
441
464
|
}
|
|
442
465
|
pub(super) fn on_abandoned(self) -> ActivityMachineTransition<Canceled> {
|
|
466
|
+
#[cfg(feature = "antithesis_assertions")]
|
|
467
|
+
crate::antithesis::assert_sometimes!(
|
|
468
|
+
true,
|
|
469
|
+
"Activity abandoned",
|
|
470
|
+
::serde_json::json!({"mode": "Abandon"})
|
|
471
|
+
);
|
|
443
472
|
notify_lang_activity_cancelled(None)
|
|
444
473
|
}
|
|
445
474
|
}
|
|
@@ -452,6 +481,14 @@ impl Started {
|
|
|
452
481
|
self,
|
|
453
482
|
attrs: ActivityTaskCompletedEventAttributes,
|
|
454
483
|
) -> ActivityMachineTransition<Completed> {
|
|
484
|
+
#[cfg(feature = "antithesis_assertions")]
|
|
485
|
+
crate::antithesis::assert_sometimes!(
|
|
486
|
+
true,
|
|
487
|
+
"Activity completed successfully",
|
|
488
|
+
::serde_json::json!({
|
|
489
|
+
"has_result": attrs.result.is_some()
|
|
490
|
+
})
|
|
491
|
+
);
|
|
455
492
|
ActivityMachineTransition::ok(
|
|
456
493
|
vec![ActivityMachineCommand::Complete(attrs.result)],
|
|
457
494
|
Completed::default(),
|
|
@@ -462,6 +499,16 @@ impl Started {
|
|
|
462
499
|
dat: &mut SharedState,
|
|
463
500
|
attrs: ActivityTaskFailedEventAttributes,
|
|
464
501
|
) -> ActivityMachineTransition<Failed> {
|
|
502
|
+
#[cfg(feature = "antithesis_assertions")]
|
|
503
|
+
crate::antithesis::assert_sometimes!(
|
|
504
|
+
true,
|
|
505
|
+
"Activity task failed",
|
|
506
|
+
::serde_json::json!({
|
|
507
|
+
"activity_id": dat.attrs.activity_id,
|
|
508
|
+
"activity_type": dat.attrs.activity_type,
|
|
509
|
+
"retry_state": attrs.retry_state
|
|
510
|
+
})
|
|
511
|
+
);
|
|
465
512
|
ActivityMachineTransition::ok(
|
|
466
513
|
vec![ActivityMachineCommand::Fail(new_failure(dat, attrs))],
|
|
467
514
|
Failed::default(),
|
|
@@ -473,6 +520,15 @@ impl Started {
|
|
|
473
520
|
dat: &mut SharedState,
|
|
474
521
|
attrs: ActivityTaskTimedOutEventAttributes,
|
|
475
522
|
) -> ActivityMachineTransition<TimedOut> {
|
|
523
|
+
#[cfg(feature = "antithesis_assertions")]
|
|
524
|
+
crate::antithesis::assert_sometimes!(
|
|
525
|
+
true,
|
|
526
|
+
"Activity timed out after starting",
|
|
527
|
+
::serde_json::json!({
|
|
528
|
+
"activity_id": dat.attrs.activity_id,
|
|
529
|
+
"state": "Started"
|
|
530
|
+
})
|
|
531
|
+
);
|
|
476
532
|
notify_lang_activity_timed_out(dat, attrs)
|
|
477
533
|
}
|
|
478
534
|
|
|
@@ -480,12 +536,27 @@ impl Started {
|
|
|
480
536
|
self,
|
|
481
537
|
dat: &mut SharedState,
|
|
482
538
|
) -> ActivityMachineTransition<StartedActivityCancelCommandCreated> {
|
|
539
|
+
#[cfg(feature = "antithesis_assertions")]
|
|
540
|
+
crate::antithesis::assert_sometimes!(
|
|
541
|
+
true,
|
|
542
|
+
"Activity cancelled after started",
|
|
543
|
+
::serde_json::json!({
|
|
544
|
+
"activity_id": dat.attrs.activity_id,
|
|
545
|
+
"cancellation_type": format!("{:?}", dat.cancellation_type)
|
|
546
|
+
})
|
|
547
|
+
);
|
|
483
548
|
create_request_cancel_activity_task_command(
|
|
484
549
|
dat,
|
|
485
550
|
StartedActivityCancelCommandCreated::default(),
|
|
486
551
|
)
|
|
487
552
|
}
|
|
488
553
|
pub(super) fn on_abandoned(self) -> ActivityMachineTransition<Canceled> {
|
|
554
|
+
#[cfg(feature = "antithesis_assertions")]
|
|
555
|
+
crate::antithesis::assert_sometimes!(
|
|
556
|
+
true,
|
|
557
|
+
"Activity abandoned in started state",
|
|
558
|
+
::serde_json::json!({"state": "Started"})
|
|
559
|
+
);
|
|
489
560
|
notify_lang_activity_cancelled(None)
|
|
490
561
|
}
|
|
491
562
|
}
|
|
@@ -502,6 +573,14 @@ impl ScheduledActivityCancelEventRecorded {
|
|
|
502
573
|
dat: &mut SharedState,
|
|
503
574
|
attrs: ActivityTaskCanceledEventAttributes,
|
|
504
575
|
) -> ActivityMachineTransition<Canceled> {
|
|
576
|
+
#[cfg(feature = "antithesis_assertions")]
|
|
577
|
+
crate::antithesis::assert_sometimes!(
|
|
578
|
+
true,
|
|
579
|
+
"Activity cancellation completed",
|
|
580
|
+
::serde_json::json!({
|
|
581
|
+
"has_details": attrs.details.is_some()
|
|
582
|
+
})
|
|
583
|
+
);
|
|
505
584
|
notify_if_not_already_cancelled(dat, |_| notify_lang_activity_cancelled(Some(attrs)))
|
|
506
585
|
}
|
|
507
586
|
|
|
@@ -532,6 +611,14 @@ impl StartedActivityCancelEventRecorded {
|
|
|
532
611
|
dat: &mut SharedState,
|
|
533
612
|
attrs: ActivityTaskCompletedEventAttributes,
|
|
534
613
|
) -> ActivityMachineTransition<Completed> {
|
|
614
|
+
#[cfg(feature = "antithesis_assertions")]
|
|
615
|
+
crate::antithesis::assert_sometimes!(
|
|
616
|
+
true,
|
|
617
|
+
"Activity completed despite cancel request",
|
|
618
|
+
::serde_json::json!({
|
|
619
|
+
"cancellation_type": format!("{:?}", dat.cancellation_type)
|
|
620
|
+
})
|
|
621
|
+
);
|
|
535
622
|
notify_if_not_already_cancelled(dat, |_| {
|
|
536
623
|
TransitionResult::commands(vec![ActivityMachineCommand::Complete(attrs.result)])
|
|
537
624
|
})
|
|
@@ -541,6 +628,14 @@ impl StartedActivityCancelEventRecorded {
|
|
|
541
628
|
dat: &mut SharedState,
|
|
542
629
|
attrs: ActivityTaskFailedEventAttributes,
|
|
543
630
|
) -> ActivityMachineTransition<Failed> {
|
|
631
|
+
#[cfg(feature = "antithesis_assertions")]
|
|
632
|
+
crate::antithesis::assert_sometimes!(
|
|
633
|
+
true,
|
|
634
|
+
"Activity failed despite cancel request",
|
|
635
|
+
::serde_json::json!({
|
|
636
|
+
"cancellation_type": format!("{:?}", dat.cancellation_type)
|
|
637
|
+
})
|
|
638
|
+
);
|
|
544
639
|
notify_if_not_already_cancelled(dat, |dat| {
|
|
545
640
|
TransitionResult::commands(vec![ActivityMachineCommand::Fail(new_failure(dat, attrs))])
|
|
546
641
|
})
|
|
@@ -647,12 +742,21 @@ impl Canceled {
|
|
|
647
742
|
) -> ActivityMachineTransition<Canceled> {
|
|
648
743
|
// Abandoned activities might start anyway. Ignore the result.
|
|
649
744
|
if dat.cancellation_type == ActivityCancellationType::Abandon {
|
|
745
|
+
#[cfg(feature = "antithesis_assertions")]
|
|
746
|
+
crate::antithesis::assert_always!(
|
|
747
|
+
true,
|
|
748
|
+
"Abandoned activity can start after cancellation",
|
|
749
|
+
::serde_json::json!({
|
|
750
|
+
"seq_num": seq_num,
|
|
751
|
+
"cancellation_type": "Abandon"
|
|
752
|
+
})
|
|
753
|
+
);
|
|
650
754
|
TransitionResult::default()
|
|
651
755
|
} else {
|
|
652
|
-
TransitionResult::Err(
|
|
756
|
+
TransitionResult::Err(nondeterminism!(
|
|
653
757
|
"Non-Abandon cancel mode activities cannot be started after being cancelled. \
|
|
654
758
|
Seq: {seq_num:?}"
|
|
655
|
-
))
|
|
759
|
+
))
|
|
656
760
|
}
|
|
657
761
|
}
|
|
658
762
|
pub(super) fn on_activity_task_completed(
|
|
@@ -662,11 +766,19 @@ impl Canceled {
|
|
|
662
766
|
) -> ActivityMachineTransition<Canceled> {
|
|
663
767
|
// Abandoned activities might complete anyway. Ignore the result.
|
|
664
768
|
if dat.cancellation_type == ActivityCancellationType::Abandon {
|
|
769
|
+
#[cfg(feature = "antithesis_assertions")]
|
|
770
|
+
crate::antithesis::assert_always!(
|
|
771
|
+
true,
|
|
772
|
+
"Abandoned activity can complete after cancellation",
|
|
773
|
+
::serde_json::json!({
|
|
774
|
+
"activity_id": dat.attrs.activity_id
|
|
775
|
+
})
|
|
776
|
+
);
|
|
665
777
|
TransitionResult::default()
|
|
666
778
|
} else {
|
|
667
|
-
TransitionResult::Err(
|
|
779
|
+
TransitionResult::Err(nondeterminism!(
|
|
668
780
|
"Non-Abandon cancel mode activities cannot be completed after being cancelled: {attrs:?}"
|
|
669
|
-
))
|
|
781
|
+
))
|
|
670
782
|
}
|
|
671
783
|
}
|
|
672
784
|
}
|
|
@@ -792,9 +904,7 @@ fn convert_payloads(
|
|
|
792
904
|
result: Option<Payloads>,
|
|
793
905
|
) -> Result<Option<Payload>, WFMachinesError> {
|
|
794
906
|
result.map(TryInto::try_into).transpose().map_err(|pe| {
|
|
795
|
-
|
|
796
|
-
"Not exactly one payload in activity result ({pe}) for event: {event_info:?}"
|
|
797
|
-
))
|
|
907
|
+
fatal!("Not exactly one payload in activity result ({pe}) for event: {event_info:?}")
|
|
798
908
|
})
|
|
799
909
|
}
|
|
800
910
|
|
|
@@ -806,7 +916,7 @@ mod test {
|
|
|
806
916
|
worker::workflow::{OutgoingJob, machines::Machines},
|
|
807
917
|
};
|
|
808
918
|
use std::{cell::RefCell, mem::discriminant, rc::Rc};
|
|
809
|
-
use
|
|
919
|
+
use temporalio_common::protos::coresdk::workflow_activation::workflow_activation_job;
|
|
810
920
|
|
|
811
921
|
#[test]
|
|
812
922
|
fn cancels_ignored_terminal() {
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
use super::{
|
|
2
|
-
EventInfo, NewMachineWithCommand, OnEventWrapper,
|
|
3
|
-
workflow_machines::MachineResponse,
|
|
2
|
+
EventInfo, NewMachineWithCommand, OnEventWrapper, StateMachine, TransitionResult,
|
|
3
|
+
WFMachinesAdapter, WFMachinesError, fsm, workflow_machines::MachineResponse,
|
|
4
4
|
};
|
|
5
|
-
use crate::worker::workflow::machines::HistEventData;
|
|
6
|
-
use rustfsm::{StateMachine, TransitionResult, fsm};
|
|
5
|
+
use crate::worker::workflow::{fatal, machines::HistEventData, nondeterminism};
|
|
7
6
|
use std::convert::TryFrom;
|
|
8
|
-
use
|
|
7
|
+
use temporalio_common::protos::{
|
|
9
8
|
coresdk::{
|
|
10
9
|
common::NamespacedWorkflowExecution,
|
|
11
10
|
workflow_activation::ResolveRequestCancelExternalWorkflow,
|
|
@@ -154,15 +153,15 @@ impl TryFrom<HistEventData> for CancelExternalMachineEvents {
|
|
|
154
153
|
if let Some(history_event::Attributes::RequestCancelExternalWorkflowExecutionFailedEventAttributes(attrs)) = e.attributes {
|
|
155
154
|
Self::RequestCancelExternalWorkflowExecutionFailed(attrs.cause())
|
|
156
155
|
} else {
|
|
157
|
-
return Err(
|
|
156
|
+
return Err(fatal!(
|
|
158
157
|
"Cancelworkflow failed attributes were unset: {e}"
|
|
159
|
-
))
|
|
158
|
+
));
|
|
160
159
|
}
|
|
161
160
|
}
|
|
162
161
|
_ => {
|
|
163
|
-
return Err(
|
|
162
|
+
return Err(nondeterminism!(
|
|
164
163
|
"Cancel external WF machine does not handle this event: {e}"
|
|
165
|
-
))
|
|
164
|
+
))
|
|
166
165
|
}
|
|
167
166
|
})
|
|
168
167
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
use super::{
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
Cancellable, EventInfo, NewMachineWithCommand, WFMachinesAdapter, WFMachinesError,
|
|
3
|
+
workflow_machines::MachineResponse,
|
|
4
4
|
};
|
|
5
|
-
use
|
|
6
|
-
use
|
|
5
|
+
use super::{StateMachine, TransitionResult, fsm};
|
|
6
|
+
use crate::worker::workflow::{machines::HistEventData, nondeterminism, fatal};
|
|
7
7
|
use std::convert::TryFrom;
|
|
8
|
-
use
|
|
8
|
+
use temporalio_common::protos::{
|
|
9
9
|
coresdk::workflow_activation::ResolveCancelNexusOperation,
|
|
10
10
|
temporal::api::{
|
|
11
|
-
command::v1::{
|
|
11
|
+
command::v1::{RequestCancelNexusOperationCommandAttributes, command},
|
|
12
12
|
enums::v1::{CommandType, EventType},
|
|
13
13
|
},
|
|
14
14
|
};
|
|
@@ -76,9 +76,9 @@ impl TryFrom<HistEventData> for CancelNexusOpMachineEvents {
|
|
|
76
76
|
Ok(match e.event_type() {
|
|
77
77
|
EventType::NexusOperationCancelRequested => Self::NexusOpCancelRequested,
|
|
78
78
|
_ => {
|
|
79
|
-
return Err(
|
|
79
|
+
return Err(nondeterminism!(
|
|
80
80
|
"Cancel external WF machine does not handle this event: {e}"
|
|
81
|
-
))
|
|
81
|
+
));
|
|
82
82
|
}
|
|
83
83
|
})
|
|
84
84
|
}
|
|
@@ -105,10 +105,12 @@ impl WFMachinesAdapter for CancelNexusOpMachine {
|
|
|
105
105
|
) -> Result<Vec<MachineResponse>, WFMachinesError> {
|
|
106
106
|
Ok(match my_command {
|
|
107
107
|
CancelNexusOpCommand::Requested => {
|
|
108
|
-
vec![
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
108
|
+
vec![
|
|
109
|
+
ResolveCancelNexusOperation {
|
|
110
|
+
seq: self.shared_state.seq,
|
|
111
|
+
}
|
|
112
|
+
.into(),
|
|
113
|
+
]
|
|
112
114
|
}
|
|
113
115
|
})
|
|
114
116
|
}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
use super::{
|
|
2
|
-
EventInfo, NewMachineWithCommand, OnEventWrapper,
|
|
3
|
-
workflow_machines::MachineResponse,
|
|
2
|
+
EventInfo, NewMachineWithCommand, OnEventWrapper, StateMachine, TransitionResult,
|
|
3
|
+
WFMachinesAdapter, WFMachinesError, fsm, workflow_machines::MachineResponse,
|
|
4
4
|
};
|
|
5
|
-
use crate::worker::workflow::machines::HistEventData;
|
|
6
|
-
use rustfsm::{StateMachine, TransitionResult, fsm};
|
|
5
|
+
use crate::worker::workflow::{machines::HistEventData, nondeterminism};
|
|
7
6
|
use std::convert::TryFrom;
|
|
8
|
-
use
|
|
7
|
+
use temporalio_common::protos::{
|
|
9
8
|
coresdk::workflow_commands::CancelWorkflowExecution,
|
|
10
9
|
temporal::api::enums::v1::{CommandType, EventType},
|
|
11
10
|
};
|
|
@@ -68,9 +67,9 @@ impl TryFrom<HistEventData> for CancelWorkflowMachineEvents {
|
|
|
68
67
|
Ok(match EventType::try_from(e.event_type) {
|
|
69
68
|
Ok(EventType::WorkflowExecutionCanceled) => Self::WorkflowExecutionCanceled,
|
|
70
69
|
_ => {
|
|
71
|
-
return Err(
|
|
70
|
+
return Err(nondeterminism!(
|
|
72
71
|
"Cancel workflow machine does not handle this event: {e}"
|
|
73
|
-
))
|
|
72
|
+
));
|
|
74
73
|
}
|
|
75
74
|
})
|
|
76
75
|
}
|