temporalio 0.0.0 → 0.0.2
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.
- checksums.yaml +4 -4
- data/README.md +301 -0
- data/bridge/Cargo.lock +2888 -0
- data/bridge/Cargo.toml +27 -0
- data/bridge/sdk-core/ARCHITECTURE.md +76 -0
- data/bridge/sdk-core/Cargo.lock +2606 -0
- data/bridge/sdk-core/Cargo.toml +2 -0
- data/bridge/sdk-core/LICENSE.txt +23 -0
- data/bridge/sdk-core/README.md +104 -0
- data/bridge/sdk-core/arch_docs/diagrams/README.md +10 -0
- data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +40 -0
- data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +1 -0
- data/bridge/sdk-core/arch_docs/sticky_queues.md +51 -0
- data/bridge/sdk-core/client/Cargo.toml +40 -0
- data/bridge/sdk-core/client/LICENSE.txt +23 -0
- data/bridge/sdk-core/client/src/lib.rs +1286 -0
- data/bridge/sdk-core/client/src/metrics.rs +165 -0
- data/bridge/sdk-core/client/src/raw.rs +932 -0
- data/bridge/sdk-core/client/src/retry.rs +751 -0
- data/bridge/sdk-core/client/src/workflow_handle/mod.rs +185 -0
- data/bridge/sdk-core/core/Cargo.toml +116 -0
- data/bridge/sdk-core/core/LICENSE.txt +23 -0
- data/bridge/sdk-core/core/benches/workflow_replay.rs +76 -0
- data/bridge/sdk-core/core/src/abstractions.rs +166 -0
- data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +1014 -0
- data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +221 -0
- data/bridge/sdk-core/core/src/core_tests/determinism.rs +107 -0
- data/bridge/sdk-core/core/src/core_tests/local_activities.rs +925 -0
- data/bridge/sdk-core/core/src/core_tests/mod.rs +100 -0
- data/bridge/sdk-core/core/src/core_tests/queries.rs +894 -0
- data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +65 -0
- data/bridge/sdk-core/core/src/core_tests/workers.rs +259 -0
- data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +124 -0
- data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +2090 -0
- data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +515 -0
- data/bridge/sdk-core/core/src/lib.rs +282 -0
- data/bridge/sdk-core/core/src/pollers/mod.rs +54 -0
- data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +297 -0
- data/bridge/sdk-core/core/src/protosext/mod.rs +428 -0
- data/bridge/sdk-core/core/src/replay/mod.rs +215 -0
- data/bridge/sdk-core/core/src/retry_logic.rs +202 -0
- data/bridge/sdk-core/core/src/telemetry/log_export.rs +190 -0
- data/bridge/sdk-core/core/src/telemetry/metrics.rs +428 -0
- data/bridge/sdk-core/core/src/telemetry/mod.rs +407 -0
- data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +78 -0
- data/bridge/sdk-core/core/src/test_help/mod.rs +889 -0
- data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +580 -0
- data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +1048 -0
- data/bridge/sdk-core/core/src/worker/activities.rs +481 -0
- data/bridge/sdk-core/core/src/worker/client/mocks.rs +87 -0
- data/bridge/sdk-core/core/src/worker/client.rs +373 -0
- data/bridge/sdk-core/core/src/worker/mod.rs +570 -0
- data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +37 -0
- data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +101 -0
- data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +532 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +907 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +294 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +167 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +858 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +136 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +157 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +129 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +1450 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +316 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +178 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +708 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +439 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +435 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +175 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +242 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +96 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +1200 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +272 -0
- data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +198 -0
- data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +655 -0
- data/bridge/sdk-core/core/src/worker/workflow/mod.rs +1200 -0
- data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +145 -0
- data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +88 -0
- data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +985 -0
- data/bridge/sdk-core/core-api/Cargo.toml +32 -0
- data/bridge/sdk-core/core-api/LICENSE.txt +23 -0
- data/bridge/sdk-core/core-api/src/errors.rs +95 -0
- data/bridge/sdk-core/core-api/src/lib.rs +109 -0
- data/bridge/sdk-core/core-api/src/telemetry.rs +147 -0
- data/bridge/sdk-core/core-api/src/worker.rs +148 -0
- data/bridge/sdk-core/etc/deps.svg +162 -0
- data/bridge/sdk-core/etc/dynamic-config.yaml +2 -0
- data/bridge/sdk-core/etc/otel-collector-config.yaml +36 -0
- data/bridge/sdk-core/etc/prometheus.yaml +6 -0
- data/bridge/sdk-core/etc/regen-depgraph.sh +5 -0
- data/bridge/sdk-core/fsm/Cargo.toml +18 -0
- data/bridge/sdk-core/fsm/LICENSE.txt +23 -0
- data/bridge/sdk-core/fsm/README.md +3 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +27 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +23 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +647 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +8 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +18 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +12 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +41 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +14 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +11 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +32 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +31 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +46 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +29 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +12 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +32 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +18 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +5 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +11 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +5 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +11 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +5 -0
- data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +14 -0
- data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +23 -0
- data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +249 -0
- data/bridge/sdk-core/fsm/src/lib.rs +2 -0
- data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
- data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
- data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
- data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
- data/bridge/sdk-core/integ-with-otel.sh +7 -0
- data/bridge/sdk-core/protos/api_upstream/README.md +9 -0
- data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +40 -0
- data/bridge/sdk-core/protos/api_upstream/buf.yaml +9 -0
- data/bridge/sdk-core/protos/api_upstream/build/go.mod +7 -0
- data/bridge/sdk-core/protos/api_upstream/build/go.sum +5 -0
- data/bridge/sdk-core/protos/api_upstream/build/tools.go +29 -0
- data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +141 -0
- data/bridge/sdk-core/protos/api_upstream/go.mod +6 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +89 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +260 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +112 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +47 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +57 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +56 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +170 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +118 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/interaction_type.proto +39 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +51 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +50 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +41 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +60 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +59 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +40 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +122 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +108 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +114 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +56 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +758 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/interaction/v1/message.proto +87 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +97 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +121 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +80 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +61 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +55 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +379 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +108 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +59 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +146 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +1168 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +415 -0
- data/bridge/sdk-core/protos/grpc/health/v1/health.proto +63 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +78 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +79 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +77 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +15 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +30 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +30 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +263 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +304 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +29 -0
- data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +38 -0
- data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +13 -0
- data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +141 -0
- data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +63 -0
- data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +90 -0
- data/bridge/sdk-core/rustfmt.toml +1 -0
- data/bridge/sdk-core/sdk/Cargo.toml +47 -0
- data/bridge/sdk-core/sdk/LICENSE.txt +23 -0
- data/bridge/sdk-core/sdk/src/activity_context.rs +230 -0
- data/bridge/sdk-core/sdk/src/app_data.rs +37 -0
- data/bridge/sdk-core/sdk/src/interceptors.rs +50 -0
- data/bridge/sdk-core/sdk/src/lib.rs +794 -0
- data/bridge/sdk-core/sdk/src/payload_converter.rs +11 -0
- data/bridge/sdk-core/sdk/src/workflow_context/options.rs +295 -0
- data/bridge/sdk-core/sdk/src/workflow_context.rs +694 -0
- data/bridge/sdk-core/sdk/src/workflow_future.rs +499 -0
- data/bridge/sdk-core/sdk-core-protos/Cargo.toml +30 -0
- data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +23 -0
- data/bridge/sdk-core/sdk-core-protos/build.rs +107 -0
- data/bridge/sdk-core/sdk-core-protos/src/constants.rs +7 -0
- data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +544 -0
- data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +230 -0
- data/bridge/sdk-core/sdk-core-protos/src/lib.rs +1970 -0
- data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +38 -0
- data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +14 -0
- data/bridge/sdk-core/test-utils/Cargo.toml +36 -0
- data/bridge/sdk-core/test-utils/src/canned_histories.rs +1579 -0
- data/bridge/sdk-core/test-utils/src/histfetch.rs +28 -0
- data/bridge/sdk-core/test-utils/src/lib.rs +650 -0
- data/bridge/sdk-core/tests/integ_tests/client_tests.rs +36 -0
- data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +128 -0
- data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +221 -0
- data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +37 -0
- data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +133 -0
- data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +437 -0
- data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +93 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +878 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +61 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +59 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +58 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +50 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +60 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +54 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +788 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +53 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +113 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +223 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +93 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +167 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +99 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +131 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +75 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +597 -0
- data/bridge/sdk-core/tests/load_tests.rs +191 -0
- data/bridge/sdk-core/tests/main.rs +113 -0
- data/bridge/sdk-core/tests/runner.rs +93 -0
- data/bridge/src/connection.rs +186 -0
- data/bridge/src/lib.rs +239 -0
- data/bridge/src/runtime.rs +54 -0
- data/bridge/src/worker.rs +124 -0
- data/ext/Rakefile +9 -0
- data/lib/bridge.so +0 -0
- data/lib/gen/dependencies/gogoproto/gogo_pb.rb +14 -0
- data/lib/gen/temporal/api/batch/v1/message_pb.rb +50 -0
- data/lib/gen/temporal/api/command/v1/message_pb.rb +174 -0
- data/lib/gen/temporal/api/common/v1/message_pb.rb +69 -0
- data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +33 -0
- data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +39 -0
- data/lib/gen/temporal/api/enums/v1/common_pb.rb +42 -0
- data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +68 -0
- data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +77 -0
- data/lib/gen/temporal/api/enums/v1/interaction_type_pb.rb +25 -0
- data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +37 -0
- data/lib/gen/temporal/api/enums/v1/query_pb.rb +31 -0
- data/lib/gen/temporal/api/enums/v1/reset_pb.rb +24 -0
- data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +28 -0
- data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +30 -0
- data/lib/gen/temporal/api/enums/v1/update_pb.rb +23 -0
- data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +89 -0
- data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +84 -0
- data/lib/gen/temporal/api/failure/v1/message_pb.rb +83 -0
- data/lib/gen/temporal/api/filter/v1/message_pb.rb +40 -0
- data/lib/gen/temporal/api/history/v1/message_pb.rb +490 -0
- data/lib/gen/temporal/api/interaction/v1/message_pb.rb +49 -0
- data/lib/gen/temporal/api/namespace/v1/message_pb.rb +63 -0
- data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +85 -0
- data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +20 -0
- data/lib/gen/temporal/api/query/v1/message_pb.rb +38 -0
- data/lib/gen/temporal/api/replication/v1/message_pb.rb +37 -0
- data/lib/gen/temporal/api/schedule/v1/message_pb.rb +149 -0
- data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +73 -0
- data/lib/gen/temporal/api/version/v1/message_pb.rb +41 -0
- data/lib/gen/temporal/api/workflow/v1/message_pb.rb +111 -0
- data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +788 -0
- data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +20 -0
- data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +58 -0
- data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +57 -0
- data/lib/gen/temporal/sdk/core/bridge/bridge_pb.rb +222 -0
- data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +57 -0
- data/lib/gen/temporal/sdk/core/common/common_pb.rb +22 -0
- data/lib/gen/temporal/sdk/core/core_interface_pb.rb +34 -0
- data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +27 -0
- data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +165 -0
- data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +196 -0
- data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +34 -0
- data/lib/temporalio/activity/context.rb +97 -0
- data/lib/temporalio/activity/info.rb +67 -0
- data/lib/temporalio/activity.rb +85 -0
- data/lib/temporalio/bridge/error.rb +8 -0
- data/lib/temporalio/bridge.rb +14 -0
- data/lib/temporalio/client/implementation.rb +340 -0
- data/lib/temporalio/client/workflow_handle.rb +243 -0
- data/lib/temporalio/client.rb +131 -0
- data/lib/temporalio/connection.rb +751 -0
- data/lib/temporalio/data_converter.rb +191 -0
- data/lib/temporalio/error/failure.rb +194 -0
- data/lib/temporalio/error/workflow_failure.rb +19 -0
- data/lib/temporalio/errors.rb +40 -0
- data/lib/temporalio/failure_converter/base.rb +26 -0
- data/lib/temporalio/failure_converter/basic.rb +319 -0
- data/lib/temporalio/failure_converter.rb +7 -0
- data/lib/temporalio/interceptor/chain.rb +28 -0
- data/lib/temporalio/interceptor/client.rb +123 -0
- data/lib/temporalio/payload_codec/base.rb +32 -0
- data/lib/temporalio/payload_converter/base.rb +24 -0
- data/lib/temporalio/payload_converter/bytes.rb +27 -0
- data/lib/temporalio/payload_converter/composite.rb +49 -0
- data/lib/temporalio/payload_converter/encoding_base.rb +35 -0
- data/lib/temporalio/payload_converter/json.rb +26 -0
- data/lib/temporalio/payload_converter/nil.rb +26 -0
- data/lib/temporalio/payload_converter.rb +14 -0
- data/lib/temporalio/retry_policy.rb +82 -0
- data/lib/temporalio/retry_state.rb +35 -0
- data/lib/temporalio/runtime.rb +25 -0
- data/lib/temporalio/timeout_type.rb +29 -0
- data/lib/temporalio/version.rb +3 -0
- data/lib/temporalio/worker/activity_runner.rb +92 -0
- data/lib/temporalio/worker/activity_worker.rb +138 -0
- data/lib/temporalio/worker/reactor.rb +46 -0
- data/lib/temporalio/worker/runner.rb +63 -0
- data/lib/temporalio/worker/sync_worker.rb +88 -0
- data/lib/temporalio/worker/thread_pool_executor.rb +51 -0
- data/lib/temporalio/worker.rb +198 -0
- data/lib/temporalio/workflow/execution_info.rb +54 -0
- data/lib/temporalio/workflow/execution_status.rb +36 -0
- data/lib/temporalio/workflow/id_reuse_policy.rb +36 -0
- data/lib/temporalio/workflow/query_reject_condition.rb +33 -0
- data/lib/temporalio.rb +12 -1
- data/lib/thermite_patch.rb +23 -0
- data/temporalio.gemspec +45 -0
- metadata +566 -9
- data/lib/temporal/version.rb +0 -3
- data/lib/temporal.rb +0 -4
- data/temporal.gemspec +0 -20
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
require 'temporal/api/common/v1/message_pb'
|
|
2
|
+
require 'temporalio/errors'
|
|
3
|
+
require 'temporalio/failure_converter'
|
|
4
|
+
require 'temporalio/payload_converter'
|
|
5
|
+
|
|
6
|
+
module Temporalio
|
|
7
|
+
class DataConverter
|
|
8
|
+
class MissingPayload < Temporalio::Error; end
|
|
9
|
+
|
|
10
|
+
# Initialize a new data converter with optional payload converter, codecs and failure converter.
|
|
11
|
+
#
|
|
12
|
+
# @param payload_converter [Temporalio::PayloadConverter::Base] A custom payload converter for
|
|
13
|
+
# converting Ruby values to/from protos. See {Temporalio::PayloadConverter::Base} for the
|
|
14
|
+
# interface definition.
|
|
15
|
+
# @param payload_codecs [Array<Temporalio::PayloadCodec::Base>] A list of payload codecs to
|
|
16
|
+
# transform payload protos. See {Temporalio::PayloadCodec::Base} for the interface definition.
|
|
17
|
+
# @param failure_converter [Temporalio::FailureConverter::Base] A custom failure converter for
|
|
18
|
+
# converting Exceptions to/from protos. See {Temporalio::FailureConverter::Base} for the
|
|
19
|
+
# interface definition.
|
|
20
|
+
#
|
|
21
|
+
# @see https://docs.temporal.io/concepts/what-is-a-data-converter for more information on
|
|
22
|
+
# payload converters and codecs.
|
|
23
|
+
def initialize(
|
|
24
|
+
payload_converter: Temporalio::PayloadConverter::DEFAULT,
|
|
25
|
+
payload_codecs: [],
|
|
26
|
+
failure_converter: Temporalio::FailureConverter::DEFAULT
|
|
27
|
+
)
|
|
28
|
+
@payload_converter = payload_converter
|
|
29
|
+
@payload_codecs = payload_codecs
|
|
30
|
+
@failure_converter = failure_converter
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def to_payload(value)
|
|
34
|
+
payload = value_to_payload(value)
|
|
35
|
+
encoded_payload = encode([payload]).first
|
|
36
|
+
raise MissingPayload, 'Payload Codecs returned no payloads' unless encoded_payload
|
|
37
|
+
|
|
38
|
+
encoded_payload
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def to_payload_array(data)
|
|
42
|
+
return [] if data.nil? || Array(data).empty?
|
|
43
|
+
|
|
44
|
+
payloads = Array(data).map { |value| value_to_payload(value) }
|
|
45
|
+
encode(payloads)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def to_payloads(data)
|
|
49
|
+
return if data.nil? || Array(data).empty?
|
|
50
|
+
|
|
51
|
+
payloads = Array(data).map { |value| value_to_payload(value) }
|
|
52
|
+
Temporalio::Api::Common::V1::Payloads.new(payloads: encode(payloads))
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def to_payload_map(data)
|
|
56
|
+
data.to_h do |key, value|
|
|
57
|
+
[key.to_s, to_payload(value)]
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def to_failure(error)
|
|
62
|
+
failure = failure_converter.to_failure(error, payload_converter)
|
|
63
|
+
encode_failure(failure)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def from_payload(payload)
|
|
67
|
+
decoded_payload = decode([payload]).first
|
|
68
|
+
raise MissingPayload, 'Payload Codecs returned no payloads' unless decoded_payload
|
|
69
|
+
|
|
70
|
+
payload_to_value(decoded_payload)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def from_payload_array(payloads)
|
|
74
|
+
return [] if payloads.empty?
|
|
75
|
+
|
|
76
|
+
decode(payloads)
|
|
77
|
+
.map { |payload| payload_to_value(payload) }
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def from_payloads(payloads)
|
|
81
|
+
return unless payloads
|
|
82
|
+
|
|
83
|
+
decode(payloads.payloads)
|
|
84
|
+
.map { |payload| payload_to_value(payload) }
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def from_payload_map(payload_map)
|
|
88
|
+
return unless payload_map
|
|
89
|
+
|
|
90
|
+
# Protobuf's Hash isn't compatible with the native Hash, ignore rubocop here
|
|
91
|
+
# rubocop:disable Style/MapToHash, Style/HashTransformValues
|
|
92
|
+
payload_map.map do |key, payload|
|
|
93
|
+
[key, from_payload(payload)]
|
|
94
|
+
end.to_h
|
|
95
|
+
# rubocop:enable Style/MapToHash, Style/HashTransformValues
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def from_failure(failure)
|
|
99
|
+
raise ArgumentError, 'missing a failure to convert from' unless failure
|
|
100
|
+
|
|
101
|
+
failure = decode_failure(failure)
|
|
102
|
+
failure_converter.from_failure(failure, payload_converter)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
private
|
|
106
|
+
|
|
107
|
+
attr_reader :payload_converter, :payload_codecs, :failure_converter
|
|
108
|
+
|
|
109
|
+
def value_to_payload(value)
|
|
110
|
+
payload_converter.to_payload(value)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def payload_to_value(payload)
|
|
114
|
+
payload_converter.from_payload(payload)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def encode(payloads)
|
|
118
|
+
return [] unless payloads
|
|
119
|
+
|
|
120
|
+
payload_codecs.each do |codec|
|
|
121
|
+
payloads = codec.encode(payloads)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
payloads
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def decode(payloads)
|
|
128
|
+
return [] unless payloads
|
|
129
|
+
|
|
130
|
+
payload_codecs.reverse_each do |codec|
|
|
131
|
+
payloads = codec.decode(payloads)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
payloads
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def encode_failure(failure)
|
|
138
|
+
failure = failure.dup
|
|
139
|
+
|
|
140
|
+
failure.encoded_attributes = failure.encoded_attributes ? encode([failure.encoded_attributes])&.first : nil
|
|
141
|
+
failure.cause = failure.cause ? encode_failure(failure.cause) : nil
|
|
142
|
+
|
|
143
|
+
if failure.application_failure_info
|
|
144
|
+
failure.application_failure_info.details = Temporalio::Api::Common::V1::Payloads.new(
|
|
145
|
+
payloads: encode(failure.application_failure_info.details&.payloads).to_a,
|
|
146
|
+
)
|
|
147
|
+
elsif failure.timeout_failure_info
|
|
148
|
+
failure.timeout_failure_info.last_heartbeat_details = Temporalio::Api::Common::V1::Payloads.new(
|
|
149
|
+
payloads: encode(failure.timeout_failure_info.last_heartbeat_details&.payloads).to_a,
|
|
150
|
+
)
|
|
151
|
+
elsif failure.canceled_failure_info
|
|
152
|
+
failure.canceled_failure_info.details = Temporalio::Api::Common::V1::Payloads.new(
|
|
153
|
+
payloads: encode(failure.canceled_failure_info.details&.payloads).to_a,
|
|
154
|
+
)
|
|
155
|
+
elsif failure.reset_workflow_failure_info
|
|
156
|
+
failure.reset_workflow_failure_info.last_heartbeat_details = Temporalio::Api::Common::V1::Payloads.new(
|
|
157
|
+
payloads: encode(failure.reset_workflow_failure_info.last_heartbeat_details&.payloads).to_a,
|
|
158
|
+
)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
failure
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def decode_failure(failure)
|
|
165
|
+
failure = failure.dup
|
|
166
|
+
|
|
167
|
+
failure.encoded_attributes = failure.encoded_attributes ? decode([failure.encoded_attributes])&.first : nil
|
|
168
|
+
failure.cause = failure.cause ? decode_failure(failure.cause) : nil
|
|
169
|
+
|
|
170
|
+
if failure.application_failure_info
|
|
171
|
+
failure.application_failure_info.details = Temporalio::Api::Common::V1::Payloads.new(
|
|
172
|
+
payloads: decode(failure.application_failure_info.details&.payloads).to_a,
|
|
173
|
+
)
|
|
174
|
+
elsif failure.timeout_failure_info
|
|
175
|
+
failure.timeout_failure_info.last_heartbeat_details = Temporalio::Api::Common::V1::Payloads.new(
|
|
176
|
+
payloads: decode(failure.timeout_failure_info.last_heartbeat_details&.payloads).to_a,
|
|
177
|
+
)
|
|
178
|
+
elsif failure.canceled_failure_info
|
|
179
|
+
failure.canceled_failure_info.details = Temporalio::Api::Common::V1::Payloads.new(
|
|
180
|
+
payloads: decode(failure.canceled_failure_info.details&.payloads).to_a,
|
|
181
|
+
)
|
|
182
|
+
elsif failure.reset_workflow_failure_info
|
|
183
|
+
failure.reset_workflow_failure_info.last_heartbeat_details = Temporalio::Api::Common::V1::Payloads.new(
|
|
184
|
+
payloads: decode(failure.reset_workflow_failure_info.last_heartbeat_details&.payloads).to_a,
|
|
185
|
+
)
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
failure
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
end
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# TODO: Figure out the hierarchy
|
|
2
|
+
require 'temporalio/errors'
|
|
3
|
+
|
|
4
|
+
module Temporalio
|
|
5
|
+
class Error
|
|
6
|
+
# Base for runtime failures during workflow/activity execution.
|
|
7
|
+
class Failure < Error
|
|
8
|
+
# @return [Temporalio::Api::Failure::V1::Failure, nil] Original proto failure
|
|
9
|
+
attr_reader :raw
|
|
10
|
+
|
|
11
|
+
def initialize(message, raw: nil, cause: nil)
|
|
12
|
+
super(message)
|
|
13
|
+
|
|
14
|
+
@raw = raw
|
|
15
|
+
@cause = cause
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def cause
|
|
19
|
+
@cause || super
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Error raised during workflow/activity execution.
|
|
24
|
+
class ApplicationError < Failure
|
|
25
|
+
# @return [String] General error type.
|
|
26
|
+
attr_reader :type
|
|
27
|
+
|
|
28
|
+
# @return [Array<any>] User-defined details on the error.
|
|
29
|
+
attr_reader :details
|
|
30
|
+
|
|
31
|
+
# @return [Bool] Whether the error is non-retryable.
|
|
32
|
+
attr_reader :non_retryable
|
|
33
|
+
|
|
34
|
+
def initialize(message, type:, details: [], non_retryable: false, raw: nil, cause: nil)
|
|
35
|
+
super(message, raw: raw, cause: cause)
|
|
36
|
+
|
|
37
|
+
@type = type
|
|
38
|
+
@details = details
|
|
39
|
+
@non_retryable = non_retryable
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def retryable?
|
|
43
|
+
!non_retryable
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Error raised on workflow/activity timeout.
|
|
48
|
+
class TimeoutError < Failure
|
|
49
|
+
# @return [Symbol] Type of timeout error. Refer to {Temporalio::TimeoutType}.
|
|
50
|
+
attr_reader :type
|
|
51
|
+
|
|
52
|
+
# @return [Array<any>] Last heartbeat details if this is for an activity heartbeat.
|
|
53
|
+
attr_reader :last_heartbeat_details
|
|
54
|
+
|
|
55
|
+
def initialize(message, type:, last_heartbeat_details: [], raw: nil, cause: nil)
|
|
56
|
+
super(message, raw: raw, cause: cause)
|
|
57
|
+
|
|
58
|
+
@type = type
|
|
59
|
+
@last_heartbeat_details = last_heartbeat_details
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Error raised on workflow/activity cancellation.
|
|
64
|
+
class CancelledError < Failure
|
|
65
|
+
# @return [Array<any>] User-defined details on the error.
|
|
66
|
+
attr_reader :details
|
|
67
|
+
|
|
68
|
+
def initialize(message, details: [], raw: nil, cause: nil)
|
|
69
|
+
super(message, raw: raw, cause: cause)
|
|
70
|
+
|
|
71
|
+
@details = details
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Error raised on workflow cancellation.
|
|
76
|
+
class TerminatedError < Failure; end
|
|
77
|
+
|
|
78
|
+
# Error originating in the Temporal server.
|
|
79
|
+
class ServerError < Failure
|
|
80
|
+
# @return [Bool] Whether the error is non-retryable.
|
|
81
|
+
attr_reader :non_retryable
|
|
82
|
+
|
|
83
|
+
def initialize(message, non_retryable:, raw: nil, cause: nil)
|
|
84
|
+
super(message, raw: raw, cause: cause)
|
|
85
|
+
|
|
86
|
+
@non_retryable = non_retryable
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def retryable?
|
|
90
|
+
!non_retryable
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
class ResetWorkflowError < Failure
|
|
95
|
+
# @return [Array<any>] Last heartbeat details if this is for an activity heartbeat.
|
|
96
|
+
attr_reader :last_heartbeat_details
|
|
97
|
+
|
|
98
|
+
def initialize(message, last_heartbeat_details: [], raw: nil, cause: nil)
|
|
99
|
+
super(message, raw: raw, cause: cause)
|
|
100
|
+
|
|
101
|
+
@last_heartbeat_details = last_heartbeat_details
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Error raised on activity failure.
|
|
106
|
+
class ActivityError < Failure
|
|
107
|
+
# @return [Integer] Scheduled event ID for this error.
|
|
108
|
+
attr_reader :scheduled_event_id
|
|
109
|
+
|
|
110
|
+
# @return [Integer] Started event ID for this error.
|
|
111
|
+
attr_reader :started_event_id
|
|
112
|
+
|
|
113
|
+
# @return [String] Identity for this error.
|
|
114
|
+
attr_reader :identity
|
|
115
|
+
|
|
116
|
+
# @return [String] Activity name for this error.
|
|
117
|
+
attr_reader :activity_name
|
|
118
|
+
|
|
119
|
+
# @return [String] Activity ID for this error.
|
|
120
|
+
attr_reader :activity_id
|
|
121
|
+
|
|
122
|
+
# @return [Symbol] Retry state for this error. Refer to {Temporalio::RetryState}.
|
|
123
|
+
attr_reader :retry_state
|
|
124
|
+
|
|
125
|
+
def initialize(
|
|
126
|
+
message,
|
|
127
|
+
scheduled_event_id:,
|
|
128
|
+
started_event_id:,
|
|
129
|
+
identity:,
|
|
130
|
+
activity_name:,
|
|
131
|
+
activity_id:,
|
|
132
|
+
retry_state:,
|
|
133
|
+
raw: nil,
|
|
134
|
+
cause: nil
|
|
135
|
+
)
|
|
136
|
+
super(message, raw: raw, cause: cause)
|
|
137
|
+
|
|
138
|
+
@scheduled_event_id = scheduled_event_id
|
|
139
|
+
@started_event_id = started_event_id
|
|
140
|
+
@identity = identity
|
|
141
|
+
@activity_name = activity_name
|
|
142
|
+
@activity_id = activity_id
|
|
143
|
+
@retry_state = retry_state
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# Error raised on child workflow failure.
|
|
148
|
+
class ChildWorkflowError < Failure
|
|
149
|
+
# @return [String] Namespace for this error.
|
|
150
|
+
attr_reader :namespace
|
|
151
|
+
|
|
152
|
+
# @return [String] Workflow ID for this error.
|
|
153
|
+
attr_reader :workflow_id
|
|
154
|
+
|
|
155
|
+
# @return [String] Run ID for this error.
|
|
156
|
+
attr_reader :run_id
|
|
157
|
+
|
|
158
|
+
# @return [String] Workflow name for this error.
|
|
159
|
+
attr_reader :workflow_name
|
|
160
|
+
|
|
161
|
+
# @return [Integer] Initiated event ID for this error.
|
|
162
|
+
attr_reader :initiated_event_id
|
|
163
|
+
|
|
164
|
+
# @return [Integer] Started event ID for this error.
|
|
165
|
+
attr_reader :started_event_id
|
|
166
|
+
|
|
167
|
+
# @return [Symbol] Retry state for this error. Refer to {Temporalio::RetryState}.
|
|
168
|
+
attr_reader :retry_state
|
|
169
|
+
|
|
170
|
+
def initialize(
|
|
171
|
+
message,
|
|
172
|
+
namespace:,
|
|
173
|
+
workflow_id:,
|
|
174
|
+
run_id:,
|
|
175
|
+
workflow_name:,
|
|
176
|
+
initiated_event_id:,
|
|
177
|
+
started_event_id:,
|
|
178
|
+
retry_state:,
|
|
179
|
+
raw: nil,
|
|
180
|
+
cause: nil
|
|
181
|
+
)
|
|
182
|
+
super(message, raw: raw, cause: cause)
|
|
183
|
+
|
|
184
|
+
@namespace = namespace
|
|
185
|
+
@workflow_id = workflow_id
|
|
186
|
+
@run_id = run_id
|
|
187
|
+
@workflow_name = workflow_name
|
|
188
|
+
@initiated_event_id = initiated_event_id
|
|
189
|
+
@started_event_id = started_event_id
|
|
190
|
+
@retry_state = retry_state
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'temporalio/errors'
|
|
2
|
+
|
|
3
|
+
module Temporalio
|
|
4
|
+
class Error
|
|
5
|
+
# Used as a wrapper to perserve failure hierarchy in nested calls
|
|
6
|
+
# i.e. WorkflowFailure(ActivityError(WorkflowFailure(CancelledError)))
|
|
7
|
+
#
|
|
8
|
+
# @api private
|
|
9
|
+
class WorkflowFailure < Error
|
|
10
|
+
attr_reader :cause
|
|
11
|
+
|
|
12
|
+
def initialize(cause:)
|
|
13
|
+
super
|
|
14
|
+
|
|
15
|
+
@cause = cause
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Temporalio
|
|
2
|
+
# Superclass for all Temporal errors
|
|
3
|
+
class Error < StandardError
|
|
4
|
+
# Superclass for RPC and proto related errors
|
|
5
|
+
class RPCError < Error; end
|
|
6
|
+
|
|
7
|
+
class UnexpectedResponse < RPCError; end
|
|
8
|
+
|
|
9
|
+
class WorkflowExecutionAlreadyStarted < RPCError; end
|
|
10
|
+
|
|
11
|
+
class QueryFailed < RPCError; end
|
|
12
|
+
|
|
13
|
+
class QueryRejected < RPCError
|
|
14
|
+
attr_reader :status
|
|
15
|
+
|
|
16
|
+
def initialize(status)
|
|
17
|
+
super("Query rejected, workflow status: #{status}")
|
|
18
|
+
@status = status
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Superclass for internal errors
|
|
23
|
+
class Internal < Error; end
|
|
24
|
+
|
|
25
|
+
class WorkerShutdown < Internal; end
|
|
26
|
+
|
|
27
|
+
# This error is used within the SDK to communicate Activity cancellations
|
|
28
|
+
# (and whether it was requested by server or not)
|
|
29
|
+
class ActivityCancelled < Internal
|
|
30
|
+
def initialize(reason, by_request)
|
|
31
|
+
super(reason)
|
|
32
|
+
@by_request = by_request
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def by_request?
|
|
36
|
+
@by_request
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Temporalio
|
|
2
|
+
module FailureConverter
|
|
3
|
+
# @abstract Use this Interface for implementing your failure converter.
|
|
4
|
+
class Base
|
|
5
|
+
# Convert an Error object to a proto Failure.
|
|
6
|
+
#
|
|
7
|
+
# @param _error [Exception] An Error to be converter.
|
|
8
|
+
# @param _payload_converter [Temporalio::PayloadConverter::Base] A payload converter.
|
|
9
|
+
#
|
|
10
|
+
# @return [Temporalio::Api::Failure::V1::Failure]
|
|
11
|
+
def to_failure(_error, _payload_converter)
|
|
12
|
+
raise NoMethodError, 'must implement #to_failure'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Convert an proto Failure object to an Error.
|
|
16
|
+
#
|
|
17
|
+
# @param _failure [Temporalio::Api::Failure::V1::Failure] A proto Failure to be converted.
|
|
18
|
+
# @param _payload_converter [Temporalio::PayloadConverter::Base] A payload converter.
|
|
19
|
+
#
|
|
20
|
+
# @return [Exception]
|
|
21
|
+
def from_failure(_failure, _payload_converter)
|
|
22
|
+
raise NoMethodError, 'must implement #from_failure'
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|