temporalio 0.0.2 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +25 -23
- data/bridge/Cargo.lock +185 -76
- data/bridge/Cargo.toml +6 -4
- data/bridge/sdk-core/README.md +19 -6
- data/bridge/sdk-core/client/src/lib.rs +215 -39
- data/bridge/sdk-core/client/src/metrics.rs +17 -8
- data/bridge/sdk-core/client/src/raw.rs +4 -4
- data/bridge/sdk-core/client/src/retry.rs +32 -20
- data/bridge/sdk-core/core/Cargo.toml +22 -9
- data/bridge/sdk-core/core/src/abstractions.rs +203 -14
- data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +76 -41
- data/bridge/sdk-core/core/src/core_tests/determinism.rs +165 -2
- data/bridge/sdk-core/core/src/core_tests/local_activities.rs +204 -83
- data/bridge/sdk-core/core/src/core_tests/queries.rs +3 -4
- data/bridge/sdk-core/core/src/core_tests/workers.rs +1 -3
- data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +397 -54
- data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +106 -12
- data/bridge/sdk-core/core/src/internal_flags.rs +136 -0
- data/bridge/sdk-core/core/src/lib.rs +16 -9
- data/bridge/sdk-core/core/src/telemetry/log_export.rs +1 -1
- data/bridge/sdk-core/core/src/telemetry/metrics.rs +69 -35
- data/bridge/sdk-core/core/src/telemetry/mod.rs +29 -13
- data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +17 -12
- data/bridge/sdk-core/core/src/test_help/mod.rs +62 -12
- data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +112 -156
- data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +89 -0
- data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +352 -122
- data/bridge/sdk-core/core/src/worker/activities.rs +233 -157
- data/bridge/sdk-core/core/src/worker/client/mocks.rs +22 -2
- data/bridge/sdk-core/core/src/worker/client.rs +18 -2
- data/bridge/sdk-core/core/src/worker/mod.rs +165 -58
- data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +1 -3
- data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +3 -5
- data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +856 -277
- data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +100 -43
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +7 -7
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +5 -4
- data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +87 -27
- data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +5 -4
- data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +5 -4
- data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +5 -4
- data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +137 -62
- data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +25 -17
- data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +7 -6
- data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +103 -152
- data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +7 -7
- data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +9 -9
- data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +2 -2
- data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +14 -7
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +5 -16
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +201 -121
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +11 -14
- data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +30 -15
- data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +1026 -376
- data/bridge/sdk-core/core/src/worker/workflow/mod.rs +460 -384
- data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +40 -57
- data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +125 -0
- data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +1 -4
- data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +117 -0
- data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +24 -0
- data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +448 -718
- data/bridge/sdk-core/core-api/Cargo.toml +2 -1
- data/bridge/sdk-core/core-api/src/errors.rs +1 -34
- data/bridge/sdk-core/core-api/src/lib.rs +6 -2
- data/bridge/sdk-core/core-api/src/telemetry.rs +0 -6
- data/bridge/sdk-core/core-api/src/worker.rs +14 -1
- data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +18 -15
- data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +8 -3
- data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +5 -17
- data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +11 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +1 -6
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +6 -6
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +5 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +22 -6
- data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +48 -19
- data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +2 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +3 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/{enums/v1/interaction_type.proto → protocol/v1/message.proto} +29 -11
- data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +63 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +111 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +59 -28
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +2 -2
- data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +1 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +1 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +1 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +1 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +1 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +1 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +7 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +1 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +6 -0
- data/bridge/sdk-core/sdk/Cargo.toml +3 -2
- data/bridge/sdk-core/sdk/src/lib.rs +87 -20
- data/bridge/sdk-core/sdk/src/workflow_future.rs +9 -8
- data/bridge/sdk-core/sdk-core-protos/Cargo.toml +5 -2
- data/bridge/sdk-core/sdk-core-protos/build.rs +36 -1
- data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +100 -87
- data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +5 -1
- data/bridge/sdk-core/sdk-core-protos/src/lib.rs +175 -57
- data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +12 -2
- data/bridge/sdk-core/test-utils/Cargo.toml +3 -1
- data/bridge/sdk-core/test-utils/src/canned_histories.rs +106 -296
- data/bridge/sdk-core/test-utils/src/histfetch.rs +1 -1
- data/bridge/sdk-core/test-utils/src/lib.rs +82 -23
- data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +50 -0
- data/bridge/sdk-core/test-utils/src/workflows.rs +29 -0
- data/bridge/sdk-core/tests/fuzzy_workflow.rs +130 -0
- data/bridge/sdk-core/tests/{load_tests.rs → heavy_tests.rs} +125 -51
- data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +25 -3
- data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +5 -3
- data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +218 -16
- data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +4 -47
- data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +5 -128
- data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +83 -25
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +93 -69
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +1 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +6 -13
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +1 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +6 -2
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +3 -10
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +72 -191
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +1 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +7 -28
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +12 -7
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +1 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +18 -14
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +6 -20
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +10 -21
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +6 -4
- data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +10 -11
- data/bridge/sdk-core/tests/main.rs +3 -13
- data/bridge/sdk-core/tests/runner.rs +75 -36
- data/bridge/sdk-core/tests/wf_input_replay.rs +32 -0
- data/bridge/src/connection.rs +41 -25
- data/bridge/src/lib.rs +269 -14
- data/bridge/src/runtime.rs +1 -1
- data/bridge/src/test_server.rs +153 -0
- data/bridge/src/worker.rs +89 -16
- data/lib/gen/temporal/api/command/v1/message_pb.rb +4 -18
- data/lib/gen/temporal/api/common/v1/message_pb.rb +4 -0
- data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +1 -3
- data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +3 -3
- data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +2 -0
- data/lib/gen/temporal/api/enums/v1/update_pb.rb +6 -4
- data/lib/gen/temporal/api/history/v1/message_pb.rb +27 -19
- data/lib/gen/temporal/api/namespace/v1/message_pb.rb +1 -0
- data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +3 -0
- data/lib/gen/temporal/api/protocol/v1/message_pb.rb +30 -0
- data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +23 -0
- data/lib/gen/temporal/api/testservice/v1/request_response_pb.rb +49 -0
- data/lib/gen/temporal/api/testservice/v1/service_pb.rb +21 -0
- data/lib/gen/temporal/api/update/v1/message_pb.rb +72 -0
- data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +26 -16
- data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +13 -9
- data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +10 -6
- data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +13 -9
- data/lib/gen/temporal/sdk/core/common/common_pb.rb +7 -3
- data/lib/gen/temporal/sdk/core/core_interface_pb.rb +9 -3
- data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +7 -3
- data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +27 -21
- data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +28 -24
- data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +12 -5
- data/lib/temporalio/activity/context.rb +13 -8
- data/lib/temporalio/activity/info.rb +1 -1
- data/lib/temporalio/bridge/connect_options.rb +15 -0
- data/lib/temporalio/bridge/retry_config.rb +24 -0
- data/lib/temporalio/bridge/tls_options.rb +19 -0
- data/lib/temporalio/bridge.rb +1 -1
- data/lib/temporalio/client/implementation.rb +8 -8
- data/lib/temporalio/connection/retry_config.rb +44 -0
- data/lib/temporalio/connection/service.rb +20 -0
- data/lib/temporalio/connection/test_service.rb +92 -0
- data/lib/temporalio/connection/tls_options.rb +51 -0
- data/lib/temporalio/connection/workflow_service.rb +731 -0
- data/lib/temporalio/connection.rb +55 -720
- data/lib/temporalio/interceptor/activity_inbound.rb +22 -0
- data/lib/temporalio/interceptor/activity_outbound.rb +24 -0
- data/lib/temporalio/interceptor/chain.rb +5 -5
- data/lib/temporalio/interceptor/client.rb +8 -4
- data/lib/temporalio/interceptor.rb +22 -0
- data/lib/temporalio/retry_policy.rb +13 -3
- data/lib/temporalio/testing/time_skipping_handle.rb +32 -0
- data/lib/temporalio/testing/time_skipping_interceptor.rb +23 -0
- data/lib/temporalio/testing/workflow_environment.rb +112 -0
- data/lib/temporalio/testing.rb +175 -0
- data/lib/temporalio/version.rb +1 -1
- data/lib/temporalio/worker/activity_runner.rb +26 -4
- data/lib/temporalio/worker/activity_worker.rb +44 -18
- data/lib/temporalio/worker/sync_worker.rb +47 -11
- data/lib/temporalio/worker.rb +27 -21
- data/lib/temporalio/workflow/async.rb +46 -0
- data/lib/temporalio/workflow/future.rb +138 -0
- data/lib/temporalio/workflow/info.rb +76 -0
- data/lib/thermite_patch.rb +10 -0
- data/sig/async.rbs +17 -0
- data/sig/protobuf.rbs +16 -0
- data/sig/protos/dependencies/gogoproto/gogo.rbs +914 -0
- data/sig/protos/google/protobuf/any.rbs +157 -0
- data/sig/protos/google/protobuf/descriptor.rbs +2825 -0
- data/sig/protos/google/protobuf/duration.rbs +114 -0
- data/sig/protos/google/protobuf/empty.rbs +36 -0
- data/sig/protos/google/protobuf/timestamp.rbs +145 -0
- data/sig/protos/google/protobuf/wrappers.rbs +358 -0
- data/sig/protos/temporal/api/batch/v1/message.rbs +300 -0
- data/sig/protos/temporal/api/command/v1/message.rbs +1399 -0
- data/sig/protos/temporal/api/common/v1/message.rbs +528 -0
- data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +79 -0
- data/sig/protos/temporal/api/enums/v1/command_type.rbs +68 -0
- data/sig/protos/temporal/api/enums/v1/common.rbs +118 -0
- data/sig/protos/temporal/api/enums/v1/event_type.rbs +264 -0
- data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +277 -0
- data/sig/protos/temporal/api/enums/v1/namespace.rbs +108 -0
- data/sig/protos/temporal/api/enums/v1/query.rbs +81 -0
- data/sig/protos/temporal/api/enums/v1/reset.rbs +44 -0
- data/sig/protos/temporal/api/enums/v1/schedule.rbs +72 -0
- data/sig/protos/temporal/api/enums/v1/task_queue.rbs +92 -0
- data/sig/protos/temporal/api/enums/v1/update.rbs +64 -0
- data/sig/protos/temporal/api/enums/v1/workflow.rbs +371 -0
- data/sig/protos/temporal/api/errordetails/v1/message.rbs +551 -0
- data/sig/protos/temporal/api/failure/v1/message.rbs +581 -0
- data/sig/protos/temporal/api/filter/v1/message.rbs +171 -0
- data/sig/protos/temporal/api/history/v1/message.rbs +4609 -0
- data/sig/protos/temporal/api/namespace/v1/message.rbs +410 -0
- data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +643 -0
- data/sig/protos/temporal/api/operatorservice/v1/service.rbs +17 -0
- data/sig/protos/temporal/api/protocol/v1/message.rbs +84 -0
- data/sig/protos/temporal/api/query/v1/message.rbs +182 -0
- data/sig/protos/temporal/api/replication/v1/message.rbs +148 -0
- data/sig/protos/temporal/api/schedule/v1/message.rbs +1488 -0
- data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +110 -0
- data/sig/protos/temporal/api/taskqueue/v1/message.rbs +486 -0
- data/sig/protos/temporal/api/testservice/v1/request_response.rbs +249 -0
- data/sig/protos/temporal/api/testservice/v1/service.rbs +15 -0
- data/sig/protos/temporal/api/update/v1/message.rbs +489 -0
- data/sig/protos/temporal/api/version/v1/message.rbs +184 -0
- data/sig/protos/temporal/api/workflow/v1/message.rbs +824 -0
- data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +7250 -0
- data/sig/protos/temporal/api/workflowservice/v1/service.rbs +22 -0
- data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +380 -0
- data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +386 -0
- data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +323 -0
- data/sig/protos/temporal/sdk/core/common/common.rbs +62 -0
- data/sig/protos/temporal/sdk/core/core_interface.rbs +101 -0
- data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +119 -0
- data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +1473 -0
- data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +1784 -0
- data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +180 -0
- data/sig/ruby.rbs +12 -0
- data/sig/temporalio/activity/context.rbs +29 -0
- data/sig/temporalio/activity/info.rbs +43 -0
- data/sig/temporalio/activity.rbs +19 -0
- data/sig/temporalio/bridge/connect_options.rbs +19 -0
- data/sig/temporalio/bridge/error.rbs +8 -0
- data/sig/temporalio/bridge/retry_config.rbs +21 -0
- data/sig/temporalio/bridge/tls_options.rbs +17 -0
- data/sig/temporalio/bridge.rbs +71 -0
- data/sig/temporalio/client/implementation.rbs +38 -0
- data/sig/temporalio/client/workflow_handle.rbs +41 -0
- data/sig/temporalio/client.rbs +35 -0
- data/sig/temporalio/connection/retry_config.rbs +37 -0
- data/sig/temporalio/connection/service.rbs +14 -0
- data/sig/temporalio/connection/test_service.rbs +13 -0
- data/sig/temporalio/connection/tls_options.rbs +43 -0
- data/sig/temporalio/connection/workflow_service.rbs +48 -0
- data/sig/temporalio/connection.rbs +30 -0
- data/sig/temporalio/data_converter.rbs +35 -0
- data/sig/temporalio/error/failure.rbs +121 -0
- data/sig/temporalio/error/workflow_failure.rbs +9 -0
- data/sig/temporalio/errors.rbs +36 -0
- data/sig/temporalio/failure_converter/base.rbs +12 -0
- data/sig/temporalio/failure_converter/basic.rbs +86 -0
- data/sig/temporalio/failure_converter.rbs +5 -0
- data/sig/temporalio/interceptor/activity_inbound.rbs +21 -0
- data/sig/temporalio/interceptor/activity_outbound.rbs +10 -0
- data/sig/temporalio/interceptor/chain.rbs +24 -0
- data/sig/temporalio/interceptor/client.rbs +148 -0
- data/sig/temporalio/interceptor.rbs +6 -0
- data/sig/temporalio/payload_codec/base.rbs +12 -0
- data/sig/temporalio/payload_converter/base.rbs +12 -0
- data/sig/temporalio/payload_converter/bytes.rbs +9 -0
- data/sig/temporalio/payload_converter/composite.rbs +19 -0
- data/sig/temporalio/payload_converter/encoding_base.rbs +14 -0
- data/sig/temporalio/payload_converter/json.rbs +9 -0
- data/sig/temporalio/payload_converter/nil.rbs +9 -0
- data/sig/temporalio/payload_converter.rbs +5 -0
- data/sig/temporalio/retry_policy.rbs +25 -0
- data/sig/temporalio/retry_state.rbs +20 -0
- data/sig/temporalio/runtime.rbs +12 -0
- data/sig/temporalio/testing/time_skipping_handle.rbs +15 -0
- data/sig/temporalio/testing/time_skipping_interceptor.rbs +13 -0
- data/sig/temporalio/testing/workflow_environment.rbs +22 -0
- data/sig/temporalio/testing.rbs +35 -0
- data/sig/temporalio/timeout_type.rbs +15 -0
- data/sig/temporalio/version.rbs +3 -0
- data/sig/temporalio/worker/activity_runner.rbs +35 -0
- data/sig/temporalio/worker/activity_worker.rbs +44 -0
- data/sig/temporalio/worker/reactor.rbs +22 -0
- data/sig/temporalio/worker/runner.rbs +21 -0
- data/sig/temporalio/worker/sync_worker.rbs +23 -0
- data/sig/temporalio/worker/thread_pool_executor.rbs +23 -0
- data/sig/temporalio/worker.rbs +46 -0
- data/sig/temporalio/workflow/async.rbs +9 -0
- data/sig/temporalio/workflow/execution_info.rbs +55 -0
- data/sig/temporalio/workflow/execution_status.rbs +21 -0
- data/sig/temporalio/workflow/future.rbs +40 -0
- data/sig/temporalio/workflow/id_reuse_policy.rbs +15 -0
- data/sig/temporalio/workflow/info.rbs +55 -0
- data/sig/temporalio/workflow/query_reject_condition.rbs +14 -0
- data/sig/temporalio.rbs +2 -0
- data/sig/thermite_patch.rbs +15 -0
- data/temporalio.gemspec +6 -4
- metadata +183 -17
- data/bridge/sdk-core/Cargo.lock +0 -2606
- data/bridge/sdk-core/protos/api_upstream/temporal/api/interaction/v1/message.proto +0 -87
- data/lib/bridge.so +0 -0
- data/lib/gen/temporal/api/enums/v1/interaction_type_pb.rb +0 -25
- data/lib/gen/temporal/api/interaction/v1/message_pb.rb +0 -49
- data/lib/gen/temporal/sdk/core/bridge/bridge_pb.rb +0 -222
@@ -15,10 +15,11 @@ categories = ["development-tools"]
|
|
15
15
|
[dependencies]
|
16
16
|
async-trait = "0.1"
|
17
17
|
derive_builder = "0.12"
|
18
|
-
opentelemetry = "0.18"
|
19
18
|
prost-types = "0.11"
|
19
|
+
serde = { version = "1.0", default_features = false, features = ["derive"] }
|
20
20
|
serde_json = "1.0"
|
21
21
|
thiserror = "1.0"
|
22
|
+
tokio = "1.24"
|
22
23
|
tonic = "0.8"
|
23
24
|
tracing-core = "0.1"
|
24
25
|
url = "2.3"
|
@@ -1,10 +1,6 @@
|
|
1
1
|
//! Error types exposed by public APIs
|
2
2
|
|
3
|
-
use
|
4
|
-
use temporal_sdk_core_protos::coresdk::{
|
5
|
-
activity_result::ActivityExecutionResult,
|
6
|
-
workflow_activation::remove_from_cache::EvictionReason,
|
7
|
-
};
|
3
|
+
use temporal_sdk_core_protos::coresdk::activity_result::ActivityExecutionResult;
|
8
4
|
|
9
5
|
/// Errors thrown by [crate::Worker::poll_workflow_activation]
|
10
6
|
#[derive(thiserror::Error, Debug)]
|
@@ -64,32 +60,3 @@ pub enum CompleteActivityError {
|
|
64
60
|
completion: Option<ActivityExecutionResult>,
|
65
61
|
},
|
66
62
|
}
|
67
|
-
|
68
|
-
/// Errors thrown inside of workflow machines
|
69
|
-
#[derive(thiserror::Error, Debug)]
|
70
|
-
pub enum WFMachinesError {
|
71
|
-
#[error("Nondeterminism error: {0}")]
|
72
|
-
Nondeterminism(String),
|
73
|
-
#[error("Fatal error in workflow machines: {0}")]
|
74
|
-
Fatal(String),
|
75
|
-
|
76
|
-
#[error("Unrecoverable network error while fetching history: {0}")]
|
77
|
-
HistoryFetchingError(tonic::Status),
|
78
|
-
}
|
79
|
-
|
80
|
-
impl WFMachinesError {
|
81
|
-
pub fn evict_reason(&self) -> EvictionReason {
|
82
|
-
match self {
|
83
|
-
WFMachinesError::Nondeterminism(_) => EvictionReason::Nondeterminism,
|
84
|
-
WFMachinesError::Fatal(_) | WFMachinesError::HistoryFetchingError(_) => {
|
85
|
-
EvictionReason::Fatal
|
86
|
-
}
|
87
|
-
}
|
88
|
-
}
|
89
|
-
}
|
90
|
-
|
91
|
-
impl From<TimestampError> for WFMachinesError {
|
92
|
-
fn from(_: TimestampError) -> Self {
|
93
|
-
Self::Fatal("Could not decode timestamp".to_string())
|
94
|
-
}
|
95
|
-
}
|
@@ -45,13 +45,17 @@ pub trait Worker: Send + Sync {
|
|
45
45
|
/// concurrently internally.
|
46
46
|
async fn poll_activity_task(&self) -> Result<ActivityTask, PollActivityError>;
|
47
47
|
|
48
|
-
/// Tell the worker that a workflow activation has completed. May be freely called
|
48
|
+
/// Tell the worker that a workflow activation has completed. May (and should) be freely called
|
49
|
+
/// concurrently. The future may take some time to resolve, as fetching more events might be
|
50
|
+
/// necessary for completion to... complete - thus SDK implementers should make sure they do
|
51
|
+
/// not serialize completions.
|
49
52
|
async fn complete_workflow_activation(
|
50
53
|
&self,
|
51
54
|
completion: WorkflowActivationCompletion,
|
52
55
|
) -> Result<(), CompleteWfError>;
|
53
56
|
|
54
|
-
/// Tell the worker that an activity has finished executing. May be freely called
|
57
|
+
/// Tell the worker that an activity has finished executing. May (and should) be freely called
|
58
|
+
/// concurrently.
|
55
59
|
async fn complete_activity_task(
|
56
60
|
&self,
|
57
61
|
completion: ActivityTaskCompletion,
|
@@ -1,4 +1,3 @@
|
|
1
|
-
use opentelemetry::metrics::Meter;
|
2
1
|
use std::{
|
3
2
|
collections::HashMap,
|
4
3
|
net::SocketAddr,
|
@@ -18,11 +17,6 @@ pub trait CoreTelemetry {
|
|
18
17
|
/// Returns the list of logs from oldest to newest. Returns an empty vec if the feature is not
|
19
18
|
/// configured.
|
20
19
|
fn fetch_buffered_logs(&self) -> Vec<CoreLog>;
|
21
|
-
|
22
|
-
/// If metrics gathering is enabled, returns the OTel meter for core telemetry, which can be
|
23
|
-
/// used to create metrics instruments, or passed to things that create/record metrics (ex:
|
24
|
-
/// clients).
|
25
|
-
fn get_metric_meter(&self) -> Option<&Meter>;
|
26
20
|
}
|
27
21
|
|
28
22
|
/// Telemetry configuration options. Construct with [TelemetryOptionsBuilder]
|
@@ -1,7 +1,8 @@
|
|
1
1
|
use std::time::Duration;
|
2
|
+
use tokio::sync::mpsc::UnboundedSender;
|
2
3
|
|
3
4
|
/// Defines per-worker configuration options
|
4
|
-
#[derive(Debug, Clone, derive_builder::Builder)]
|
5
|
+
#[derive(Debug, Clone, derive_builder::Builder, serde::Serialize, serde::Deserialize)]
|
5
6
|
#[builder(setter(into), build_fn(validate = "Self::validate"))]
|
6
7
|
#[non_exhaustive]
|
7
8
|
pub struct WorkerConfig {
|
@@ -105,6 +106,18 @@ pub struct WorkerConfig {
|
|
105
106
|
/// up during shutdown, setting this true saves some back-and-forth.
|
106
107
|
#[builder(default = "false")]
|
107
108
|
pub ignore_evicts_on_shutdown: bool,
|
109
|
+
|
110
|
+
/// Maximum number of next page (or initial) history event listing requests we'll make
|
111
|
+
/// concurrently. I don't this it's worth exposing this to users until we encounter a reason.
|
112
|
+
#[builder(default = "5")]
|
113
|
+
pub fetching_concurrency: usize,
|
114
|
+
|
115
|
+
/// If set, and the `save_wf_inputs` feature is enabled in core, will be sent a serialized
|
116
|
+
/// instance of every input to workflow state in order. This is for testing purposes, SDK
|
117
|
+
/// implementations never need to care about it.
|
118
|
+
#[builder(default)]
|
119
|
+
#[serde(skip)]
|
120
|
+
pub wf_state_inputs: Option<UnboundedSender<Vec<u8>>>,
|
108
121
|
}
|
109
122
|
|
110
123
|
impl WorkerConfig {
|
@@ -132,17 +132,17 @@ use syn::{
|
|
132
132
|
/// The macro will generate a few things:
|
133
133
|
/// * A struct for the overall state machine, named with the provided name. Here:
|
134
134
|
/// ```text
|
135
|
-
/// struct
|
136
|
-
/// state:
|
137
|
-
/// shared_state:
|
135
|
+
/// struct CardReader {
|
136
|
+
/// state: CardReaderState,
|
137
|
+
/// shared_state: SharedState,
|
138
138
|
/// }
|
139
139
|
/// ```
|
140
140
|
/// * An enum with a variant for each state, named with the provided name + "State".
|
141
141
|
/// ```text
|
142
|
-
/// enum
|
142
|
+
/// enum CardReaderState {
|
143
143
|
/// Locked(Locked),
|
144
144
|
/// ReadingCard(ReadingCard),
|
145
|
-
///
|
145
|
+
/// DoorOpen(DoorOpen),
|
146
146
|
/// }
|
147
147
|
/// ```
|
148
148
|
///
|
@@ -154,15 +154,18 @@ use syn::{
|
|
154
154
|
/// * An enum with a variant for each event. You are expected to define the type (if any) contained
|
155
155
|
/// in the event variant.
|
156
156
|
/// ```text
|
157
|
-
/// enum
|
158
|
-
///
|
157
|
+
/// enum CardReaderEvents {
|
158
|
+
/// DoorClosed,
|
159
|
+
/// CardAccepted,
|
160
|
+
/// CardRejected,
|
161
|
+
/// CardReadable(CardData),
|
159
162
|
/// }
|
160
163
|
/// ```
|
161
164
|
/// * An implementation of the [StateMachine](trait.StateMachine.html) trait for the generated state
|
162
|
-
/// machine enum (in this case, `
|
165
|
+
/// machine enum (in this case, `CardReader`)
|
163
166
|
/// * A type alias for a [TransitionResult](enum.TransitionResult.html) with the appropriate generic
|
164
167
|
/// parameters set for your machine. It is named as your machine with `Transition` appended. In
|
165
|
-
/// this case, `
|
168
|
+
/// this case, `CardReaderTransition`.
|
166
169
|
#[proc_macro]
|
167
170
|
pub fn fsm(input: TokenStream) -> TokenStream {
|
168
171
|
let def: StateMachineDefinition = parse_macro_input!(input as StateMachineDefinition);
|
@@ -346,12 +349,12 @@ impl StateMachineDefinition {
|
|
346
349
|
let name = &self.name;
|
347
350
|
let name_str = &self.name.to_string();
|
348
351
|
|
349
|
-
let transition_result_name = Ident::new(&format!("{}Transition"
|
352
|
+
let transition_result_name = Ident::new(&format!("{name}Transition"), name.span());
|
350
353
|
let transition_type_alias = quote! {
|
351
354
|
type #transition_result_name<Ds, Sm = #name> = TransitionResult<Sm, Ds>;
|
352
355
|
};
|
353
356
|
|
354
|
-
let state_enum_name = Ident::new(&format!("{}State"
|
357
|
+
let state_enum_name = Ident::new(&format!("{name}State"), name.span());
|
355
358
|
// If user has not defined any shared state, use the unit type.
|
356
359
|
let shared_state_type = self
|
357
360
|
.shared_state_type
|
@@ -390,7 +393,7 @@ impl StateMachineDefinition {
|
|
390
393
|
|
391
394
|
// Build the events enum
|
392
395
|
let events: HashSet<Variant> = self.transitions.iter().map(|t| t.event.clone()).collect();
|
393
|
-
let events_enum_name = Ident::new(&format!("{}Events"
|
396
|
+
let events_enum_name = Ident::new(&format!("{name}Events"), name.span());
|
394
397
|
let events: Vec<_> = events
|
395
398
|
.into_iter()
|
396
399
|
.map(|v| {
|
@@ -616,11 +619,11 @@ impl StateMachineDefinition {
|
|
616
619
|
self.all_states()
|
617
620
|
.iter()
|
618
621
|
.filter(|s| self.is_final_state(s))
|
619
|
-
.map(|s| format!("{} --> [*]"
|
622
|
+
.map(|s| format!("{s} --> [*]")),
|
620
623
|
)
|
621
624
|
.collect();
|
622
625
|
let transitions = transitions.join("\n");
|
623
|
-
format!("@startuml\n{}\n@enduml"
|
626
|
+
format!("@startuml\n{transitions}\n@enduml")
|
624
627
|
}
|
625
628
|
}
|
626
629
|
|
@@ -643,5 +646,5 @@ fn merge_transition_dests(transitions: Vec<Transition>) -> Vec<Transition> {
|
|
643
646
|
}
|
644
647
|
}
|
645
648
|
}
|
646
|
-
map.
|
649
|
+
map.into_values().collect()
|
647
650
|
}
|
@@ -34,6 +34,7 @@ pub trait StateMachine: Sized {
|
|
34
34
|
where
|
35
35
|
Self: Clone,
|
36
36
|
{
|
37
|
+
// TODO: Get rid of this clone. It's pointless.
|
37
38
|
// NOTE: This clone is actually nice in some sense, giving us a kind of transactionality.
|
38
39
|
// However if there are really big things in state it could be an issue.
|
39
40
|
let res = self.clone().on_event(event);
|
@@ -207,10 +208,14 @@ where
|
|
207
208
|
new_state: Ds::default(),
|
208
209
|
}
|
209
210
|
}
|
211
|
+
}
|
210
212
|
|
211
|
-
|
212
|
-
|
213
|
-
|
213
|
+
impl<Sm, Ds> Default for TransitionResult<Sm, Ds>
|
214
|
+
where
|
215
|
+
Sm: StateMachine,
|
216
|
+
Ds: Into<Sm::State> + Default,
|
217
|
+
{
|
218
|
+
fn default() -> Self {
|
214
219
|
Self::OkNoShare {
|
215
220
|
commands: vec![],
|
216
221
|
new_state: Ds::default(),
|
Binary file
|
@@ -39,7 +39,6 @@ import "temporal/api/enums/v1/workflow.proto";
|
|
39
39
|
import "temporal/api/enums/v1/command_type.proto";
|
40
40
|
import "temporal/api/common/v1/message.proto";
|
41
41
|
import "temporal/api/failure/v1/message.proto";
|
42
|
-
import "temporal/api/interaction/v1/message.proto";
|
43
42
|
import "temporal/api/taskqueue/v1/message.proto";
|
44
43
|
|
45
44
|
message ScheduleActivityTaskCommandAttributes {
|
@@ -221,19 +220,9 @@ message StartChildWorkflowExecutionCommandAttributes {
|
|
221
220
|
temporal.api.common.v1.SearchAttributes search_attributes = 16;
|
222
221
|
}
|
223
222
|
|
224
|
-
message
|
225
|
-
|
226
|
-
|
227
|
-
}
|
228
|
-
|
229
|
-
message CompleteWorkflowUpdateCommandAttributes {
|
230
|
-
temporal.api.interaction.v1.Meta meta = 1;
|
231
|
-
temporal.api.interaction.v1.Output output = 2;
|
232
|
-
}
|
233
|
-
|
234
|
-
message RejectWorkflowUpdateCommandAttributes {
|
235
|
-
temporal.api.interaction.v1.Meta meta = 1;
|
236
|
-
temporal.api.failure.v1.Failure failure = 2;
|
223
|
+
message ProtocolMessageCommandAttributes {
|
224
|
+
// The message ID of the message to which this command is a pointer.
|
225
|
+
string message_id = 1;
|
237
226
|
}
|
238
227
|
|
239
228
|
message Command {
|
@@ -252,9 +241,8 @@ message Command {
|
|
252
241
|
StartChildWorkflowExecutionCommandAttributes start_child_workflow_execution_command_attributes = 12;
|
253
242
|
SignalExternalWorkflowExecutionCommandAttributes signal_external_workflow_execution_command_attributes = 13;
|
254
243
|
UpsertWorkflowSearchAttributesCommandAttributes upsert_workflow_search_attributes_command_attributes = 14;
|
255
|
-
|
256
|
-
|
244
|
+
ProtocolMessageCommandAttributes protocol_message_command_attributes = 15;
|
245
|
+
// 16 is available for use - it was used as part of a prototype that never made it into a release
|
257
246
|
ModifyWorkflowPropertiesCommandAttributes modify_workflow_properties_command_attributes = 17;
|
258
|
-
RejectWorkflowUpdateCommandAttributes reject_workflow_update_command_attributes = 18;
|
259
247
|
}
|
260
248
|
}
|
@@ -110,3 +110,14 @@ message RetryPolicy {
|
|
110
110
|
// this is not a substring match, the error *type* (not message) must match exactly.
|
111
111
|
repeated string non_retryable_error_types = 5;
|
112
112
|
}
|
113
|
+
|
114
|
+
// Metadata relevant for metering purposes
|
115
|
+
message MeteringMetadata {
|
116
|
+
// Count of local activities which have begun an execution attempt during this workflow task,
|
117
|
+
// and whose first attempt occurred in some previous task. This is used for metering
|
118
|
+
// purposes, and does not affect workflow state.
|
119
|
+
//
|
120
|
+
// (-- api-linter: core::0141::forbidden-types=disabled
|
121
|
+
// aip.dev/not-precedent: Negative values make no sense to represent. --)
|
122
|
+
uint32 nonfirst_local_activity_execution_attempts = 13;
|
123
|
+
}
|
@@ -47,11 +47,6 @@ enum CommandType {
|
|
47
47
|
COMMAND_TYPE_START_CHILD_WORKFLOW_EXECUTION = 11;
|
48
48
|
COMMAND_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION = 12;
|
49
49
|
COMMAND_TYPE_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES = 13;
|
50
|
-
|
51
|
-
COMMAND_TYPE_ACCEPT_WORKFLOW_UPDATE = 14;
|
52
|
-
// Indicates that an update has completed and carries either the success or
|
53
|
-
// failure outcome of said update.
|
54
|
-
COMMAND_TYPE_COMPLETE_WORKFLOW_UPDATE = 15;
|
50
|
+
COMMAND_TYPE_PROTOCOL_MESSAGE = 14;
|
55
51
|
COMMAND_TYPE_MODIFY_WORKFLOW_PROPERTIES = 16;
|
56
|
-
COMMAND_TYPE_REJECT_WORKFLOW_UPDATE = 17;
|
57
52
|
}
|
@@ -151,12 +151,12 @@ enum EventType {
|
|
151
151
|
EVENT_TYPE_EXTERNAL_WORKFLOW_EXECUTION_SIGNALED = 39;
|
152
152
|
// Workflow search attributes should be updated and synchronized with the visibility store
|
153
153
|
EVENT_TYPE_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES = 40;
|
154
|
-
//
|
155
|
-
|
156
|
-
//
|
157
|
-
|
158
|
-
//
|
159
|
-
|
154
|
+
// An update was accepted (i.e. validated)
|
155
|
+
EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_ACCEPTED = 41;
|
156
|
+
// An update was rejected (i.e. failed validation)
|
157
|
+
EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_REJECTED = 42;
|
158
|
+
// An update completed
|
159
|
+
EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_COMPLETED = 43;
|
160
160
|
// Some property or properties of the workflow as a whole have changed by non-workflow code.
|
161
161
|
// The distinction of external vs. command-based modification is important so the SDK can
|
162
162
|
// maintain determinism when using the command-based approach.
|
@@ -85,6 +85,11 @@ enum WorkflowTaskFailedCause {
|
|
85
85
|
// Similarly, we have a buffer of pending requests to cancel other workflows. We return this error
|
86
86
|
// when our capacity for pending cancel requests is already reached.
|
87
87
|
WORKFLOW_TASK_FAILED_CAUSE_PENDING_REQUEST_CANCEL_LIMIT_EXCEEDED = 29;
|
88
|
+
// Workflow execution update message (update.Acceptance, update.Rejection, or update.Response)
|
89
|
+
// has wrong format, or missing required fields.
|
90
|
+
WORKFLOW_TASK_FAILED_CAUSE_BAD_UPDATE_WORKFLOW_EXECUTION_MESSAGE = 30;
|
91
|
+
// Similar to WORKFLOW_TASK_FAILED_CAUSE_UNHANDLED_COMMAND, but for updates.
|
92
|
+
WORKFLOW_TASK_FAILED_CAUSE_UNHANDLED_UPDATE = 31;
|
88
93
|
}
|
89
94
|
|
90
95
|
enum StartChildWorkflowExecutionFailedCause {
|
@@ -31,10 +31,26 @@ option java_outer_classname = "UpdateProto";
|
|
31
31
|
option ruby_package = "Temporalio::Api::Enums::V1";
|
32
32
|
option csharp_namespace = "Temporalio.Api.Enums.V1";
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
// UpdateWorkflowExecutionLifecycleStage is specified by clients invoking
|
35
|
+
// workflow execution updates and used to indicate to the server how long the
|
36
|
+
// client wishes to wait for a return value from the RPC. If any value other
|
37
|
+
// than UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_COMPLETED is sent by the
|
38
|
+
// client then the RPC will complete before the update is finished and will
|
39
|
+
// return a handle to the running update so that it can later be polled for
|
40
|
+
// completion.
|
41
|
+
enum UpdateWorkflowExecutionLifecycleStage {
|
42
|
+
// An unspecified vale for this enum.
|
43
|
+
UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_UNSPECIFIED = 0;
|
44
|
+
// The gRPC call will not return until the update request has been admitted
|
45
|
+
// by the server - it may be the case that due to a considerations like load
|
46
|
+
// or resource limits that an update is made to wait before the server will
|
47
|
+
// indicate that it has been received and will be processed. This value
|
48
|
+
// does not wait for any sort of acknowledgement from a worker.
|
49
|
+
UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ADMITTED = 1;
|
50
|
+
// The gRPC call will not return until the update has passed validation on
|
51
|
+
// a worker.
|
52
|
+
UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ACCEPTED = 2;
|
53
|
+
// The gRPC call will not return until the update has executed to completion
|
54
|
+
// on a worker and has either been rejected or returned a value or an error.
|
55
|
+
UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_COMPLETED = 3;
|
40
56
|
}
|
@@ -41,9 +41,10 @@ import "temporal/api/enums/v1/failed_cause.proto";
|
|
41
41
|
import "temporal/api/enums/v1/workflow.proto";
|
42
42
|
import "temporal/api/common/v1/message.proto";
|
43
43
|
import "temporal/api/failure/v1/message.proto";
|
44
|
-
import "temporal/api/interaction/v1/message.proto";
|
45
44
|
import "temporal/api/taskqueue/v1/message.proto";
|
45
|
+
import "temporal/api/update/v1/message.proto";
|
46
46
|
import "temporal/api/workflow/v1/message.proto";
|
47
|
+
import "temporal/api/sdk/v1/task_complete_metadata.proto";
|
47
48
|
|
48
49
|
// Always the first event in workflow history
|
49
50
|
message WorkflowExecutionStartedEventAttributes {
|
@@ -195,6 +196,11 @@ message WorkflowTaskCompletedEventAttributes {
|
|
195
196
|
// ID of the worker who picked up this workflow task, or missing if worker
|
196
197
|
// is not using versioning.
|
197
198
|
temporal.api.taskqueue.v1.VersionId worker_versioning_id = 5;
|
199
|
+
// Data the SDK wishes to record for itself, but server need not interpret, and does not
|
200
|
+
// directly impact workflow state.
|
201
|
+
temporal.api.sdk.v1.WorkflowTaskCompletedMetadata sdk_metadata = 6;
|
202
|
+
// Local usage data sent during workflow task completion and recorded here for posterity
|
203
|
+
temporal.api.common.v1.MeteringMetadata metering_metadata = 13;
|
198
204
|
}
|
199
205
|
|
200
206
|
message WorkflowTaskTimedOutEventAttributes {
|
@@ -647,21 +653,6 @@ message ChildWorkflowExecutionTerminatedEventAttributes {
|
|
647
653
|
int64 started_event_id = 5;
|
648
654
|
}
|
649
655
|
|
650
|
-
message WorkflowUpdateAcceptedEventAttributes {
|
651
|
-
temporal.api.interaction.v1.Meta meta = 1;
|
652
|
-
temporal.api.interaction.v1.Input input = 2;
|
653
|
-
}
|
654
|
-
|
655
|
-
message WorkflowUpdateCompletedEventAttributes {
|
656
|
-
temporal.api.interaction.v1.Meta meta = 1;
|
657
|
-
temporal.api.interaction.v1.Output output = 2;
|
658
|
-
}
|
659
|
-
|
660
|
-
message WorkflowUpdateRejectedEventAttributes {
|
661
|
-
temporal.api.interaction.v1.Meta meta = 1;
|
662
|
-
temporal.api.failure.v1.Failure failure = 2;
|
663
|
-
}
|
664
|
-
|
665
656
|
message WorkflowPropertiesModifiedExternallyEventAttributes {
|
666
657
|
// If set to a nonempty string, future workflow tasks for this workflow shall be dispatched on
|
667
658
|
// the provided queue.
|
@@ -686,6 +677,44 @@ message ActivityPropertiesModifiedExternallyEventAttributes {
|
|
686
677
|
temporal.api.common.v1.RetryPolicy new_retry_policy = 2;
|
687
678
|
}
|
688
679
|
|
680
|
+
message WorkflowExecutionUpdateAcceptedEventAttributes {
|
681
|
+
// The instance ID of the update protocol that generated this event.
|
682
|
+
string protocol_instance_id = 1;
|
683
|
+
// The message ID of the original request message that initiated this
|
684
|
+
// update. Needed so that the worker can recreate and deliver that same
|
685
|
+
// message as part of replay.
|
686
|
+
string accepted_request_message_id = 2;
|
687
|
+
// The event ID used to sequence the original request message.
|
688
|
+
int64 accepted_request_sequencing_event_id = 3;
|
689
|
+
// The message payload of the original request message that initiated this
|
690
|
+
// update.
|
691
|
+
temporal.api.update.v1.Request accepted_request = 4;
|
692
|
+
}
|
693
|
+
|
694
|
+
message WorkflowExecutionUpdateCompletedEventAttributes {
|
695
|
+
// The metadata about this update.
|
696
|
+
temporal.api.update.v1.Meta meta = 1;
|
697
|
+
// The outcome of executing the workflow update function.
|
698
|
+
temporal.api.update.v1.Outcome outcome = 2;
|
699
|
+
}
|
700
|
+
|
701
|
+
message WorkflowExecutionUpdateRejectedEventAttributes {
|
702
|
+
// The instance ID of the update protocol that generated this event.
|
703
|
+
string protocol_instance_id = 1;
|
704
|
+
// The message ID of the original request message that initiated this
|
705
|
+
// update. Needed so that the worker can recreate and deliver that same
|
706
|
+
// message as part of replay.
|
707
|
+
string rejected_request_message_id = 2;
|
708
|
+
// The event ID used to sequence the original request message.
|
709
|
+
int64 rejected_request_sequencing_event_id = 3;
|
710
|
+
// The message payload of the original request message that initiated this
|
711
|
+
// update.
|
712
|
+
temporal.api.update.v1.Request rejected_request = 4;
|
713
|
+
// The cause of rejection.
|
714
|
+
temporal.api.failure.v1.Failure failure = 5;
|
715
|
+
}
|
716
|
+
|
717
|
+
|
689
718
|
// History events are the method by which Temporal SDKs advance (or recreate) workflow state.
|
690
719
|
// See the `EventType` enum for more info about what each event is for.
|
691
720
|
message HistoryEvent {
|
@@ -744,9 +773,9 @@ message HistoryEvent {
|
|
744
773
|
SignalExternalWorkflowExecutionFailedEventAttributes signal_external_workflow_execution_failed_event_attributes = 43;
|
745
774
|
ExternalWorkflowExecutionSignaledEventAttributes external_workflow_execution_signaled_event_attributes = 44;
|
746
775
|
UpsertWorkflowSearchAttributesEventAttributes upsert_workflow_search_attributes_event_attributes = 45;
|
747
|
-
|
748
|
-
|
749
|
-
|
776
|
+
WorkflowExecutionUpdateAcceptedEventAttributes workflow_execution_update_accepted_event_attributes = 46;
|
777
|
+
WorkflowExecutionUpdateRejectedEventAttributes workflow_execution_update_rejected_event_attributes = 47;
|
778
|
+
WorkflowExecutionUpdateCompletedEventAttributes workflow_execution_update_completed_event_attributes = 48;
|
750
779
|
WorkflowPropertiesModifiedExternallyEventAttributes workflow_properties_modified_externally_event_attributes = 49;
|
751
780
|
ActivityPropertiesModifiedExternallyEventAttributes activity_properties_modified_externally_event_attributes = 50;
|
752
781
|
WorkflowPropertiesModifiedEventAttributes workflow_properties_modified_event_attributes = 51;
|
@@ -62,6 +62,8 @@ message NamespaceConfig {
|
|
62
62
|
// If unspecified (ARCHIVAL_STATE_UNSPECIFIED) then default server configuration is used.
|
63
63
|
temporal.api.enums.v1.ArchivalState visibility_archival_state = 5;
|
64
64
|
string visibility_archival_uri = 6;
|
65
|
+
// Map from field name to alias.
|
66
|
+
map<string, string> custom_search_attribute_aliases = 7;
|
65
67
|
}
|
66
68
|
|
67
69
|
message BadBinaries {
|
data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto
CHANGED
@@ -38,6 +38,7 @@ import "temporal/api/enums/v1/common.proto";
|
|
38
38
|
message AddSearchAttributesRequest {
|
39
39
|
// Mapping between search attribute name and its IndexedValueType.
|
40
40
|
map<string, temporal.api.enums.v1.IndexedValueType> search_attributes = 1;
|
41
|
+
string namespace = 2;
|
41
42
|
}
|
42
43
|
|
43
44
|
message AddSearchAttributesResponse {
|
@@ -46,12 +47,14 @@ message AddSearchAttributesResponse {
|
|
46
47
|
message RemoveSearchAttributesRequest {
|
47
48
|
// Search attribute names to delete.
|
48
49
|
repeated string search_attributes = 1;
|
50
|
+
string namespace = 2;
|
49
51
|
}
|
50
52
|
|
51
53
|
message RemoveSearchAttributesResponse {
|
52
54
|
}
|
53
55
|
|
54
56
|
message ListSearchAttributesRequest {
|
57
|
+
string namespace = 1;
|
55
58
|
}
|
56
59
|
|
57
60
|
message ListSearchAttributesResponse {
|
@@ -22,18 +22,36 @@
|
|
22
22
|
|
23
23
|
syntax = "proto3";
|
24
24
|
|
25
|
-
package temporal.api.
|
25
|
+
package temporal.api.protocol.v1;
|
26
26
|
|
27
|
-
option go_package = "go.temporal.io/api/
|
28
|
-
option java_package = "io.temporal.api.
|
27
|
+
option go_package = "go.temporal.io/api/protocol/v1;protocol";
|
28
|
+
option java_package = "io.temporal.api.protocol.v1";
|
29
29
|
option java_multiple_files = true;
|
30
|
-
option java_outer_classname = "
|
31
|
-
option ruby_package = "Temporalio::Api::
|
32
|
-
option csharp_namespace = "
|
30
|
+
option java_outer_classname = "MessageProto";
|
31
|
+
option ruby_package = "Temporalio::Api::Protocol::V1";
|
32
|
+
option csharp_namespace = "Temporalt.Api.Protocol.V1";
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
34
|
+
import "google/protobuf/any.proto";
|
35
|
+
|
36
|
+
// (-- api-linter: core::0146::any=disabled
|
37
|
+
// aip.dev/not-precedent: We want runtime extensibility for the body field --)
|
38
|
+
message Message {
|
39
|
+
// An ID for this specific message.
|
40
|
+
string id = 1;
|
41
|
+
|
42
|
+
// Identifies the specific instance of a protocol to which this message
|
43
|
+
// belongs.
|
44
|
+
string protocol_instance_id = 2;
|
45
|
+
|
46
|
+
// The event ID or command ID after which this message can be delivered. The
|
47
|
+
// effects of history up to and including this event ID should be visible to
|
48
|
+
// the code that handles this message. Omit to opt out of sequencing.
|
49
|
+
oneof sequencing_id {
|
50
|
+
int64 event_id = 3;
|
51
|
+
int64 command_index = 4;
|
52
|
+
};
|
53
|
+
|
54
|
+
// The opaque data carried by this message. The protocol type can be
|
55
|
+
// extracted from the package name of the message carried inside the Any.
|
56
|
+
google.protobuf.Any body = 5;
|
39
57
|
}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
// The MIT License
|
2
|
+
//
|
3
|
+
// Copyright (c) 2020 Temporal Technologies Inc. All rights reserved.
|
4
|
+
//
|
5
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
// of this software and associated documentation files (the "Software"), to deal
|
7
|
+
// in the Software without restriction, including without limitation the rights
|
8
|
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
// copies of the Software, and to permit persons to whom the Software is
|
10
|
+
// furnished to do so, subject to the following conditions:
|
11
|
+
//
|
12
|
+
// The above copyright notice and this permission notice shall be included in
|
13
|
+
// all copies or substantial portions of the Software.
|
14
|
+
//
|
15
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
// THE SOFTWARE.
|
22
|
+
|
23
|
+
syntax = "proto3";
|
24
|
+
|
25
|
+
package temporal.api.sdk.v1;
|
26
|
+
|
27
|
+
option go_package = "go.temporal.io/api/sdk/v1;sdk";
|
28
|
+
option java_package = "io.temporal.api.sdk.v1";
|
29
|
+
option java_multiple_files = true;
|
30
|
+
option java_outer_classname = "TaskCompleteMetadataProto";
|
31
|
+
option ruby_package = "Temporalio::Api::Sdk::V1";
|
32
|
+
option csharp_namespace = "Temporalio.Api.Sdk.V1";
|
33
|
+
|
34
|
+
message WorkflowTaskCompletedMetadata {
|
35
|
+
// Internal flags used by the core SDK. SDKs using flags must comply with the following behavior:
|
36
|
+
//
|
37
|
+
// During replay:
|
38
|
+
// * If a flag is not recognized (value is too high or not defined), it must fail the workflow
|
39
|
+
// task.
|
40
|
+
// * If a flag is recognized, it is stored in a set of used flags for the run. Code checks for
|
41
|
+
// that flag during and after this WFT are allowed to assume that the flag is present.
|
42
|
+
// * If a code check for a flag does not find the flag in the set of used flags, it must take
|
43
|
+
// the branch corresponding to the absence of that flag.
|
44
|
+
//
|
45
|
+
// During non-replay execution of new WFTs:
|
46
|
+
// * The SDK is free to use all flags it knows about. It must record any newly-used (IE: not
|
47
|
+
// previously recorded) flags when completing the WFT.
|
48
|
+
//
|
49
|
+
// SDKs which are too old to even know about this field at all are considered to produce
|
50
|
+
// undefined behavior if they replay workflows which used this mechanism.
|
51
|
+
//
|
52
|
+
// (-- api-linter: core::0141::forbidden-types=disabled
|
53
|
+
// aip.dev/not-precedent: These really shouldn't have negative values. --)
|
54
|
+
repeated uint32 core_used_flags = 1;
|
55
|
+
|
56
|
+
// Flags used by the SDK lang. No attempt is made to distinguish between different SDK languages
|
57
|
+
// here as processing a workflow with a different language than the one which authored it is
|
58
|
+
// already undefined behavior. See `core_used_patches` for more.
|
59
|
+
//
|
60
|
+
// (-- api-linter: core::0141::forbidden-types=disabled
|
61
|
+
// aip.dev/not-precedent: These really shouldn't have negative values. --)
|
62
|
+
repeated uint32 lang_used_flags = 2;
|
63
|
+
}
|