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,51 @@
|
|
|
1
|
+
module Temporalio
|
|
2
|
+
class Worker
|
|
3
|
+
# A generic fixed thread pool.
|
|
4
|
+
#
|
|
5
|
+
# This is used to execute multiple activities concurrently and independenty of each other.
|
|
6
|
+
#
|
|
7
|
+
# @note This is a fixed thread pool that allocated threads eagerly and has an infinite buffer.
|
|
8
|
+
class ThreadPoolExecutor
|
|
9
|
+
# Generate new thread pool executor.
|
|
10
|
+
#
|
|
11
|
+
# @param size [Integer] Number of concurrently executing threads.
|
|
12
|
+
def initialize(size)
|
|
13
|
+
@queue = Queue.new
|
|
14
|
+
@pool = Array.new(size) do
|
|
15
|
+
Thread.new { poll }
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Execute a block of code inside of the threads.
|
|
20
|
+
#
|
|
21
|
+
# @yield Block of code to be executed.
|
|
22
|
+
def schedule(&block)
|
|
23
|
+
queue << block
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Stop the thread pool and wait for all threads to finish work.
|
|
27
|
+
def shutdown
|
|
28
|
+
pool.size.times do
|
|
29
|
+
schedule { throw EXIT_SYMBOL }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
pool.each(&:join)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
attr_reader :queue, :pool
|
|
38
|
+
|
|
39
|
+
EXIT_SYMBOL = :exit
|
|
40
|
+
|
|
41
|
+
def poll
|
|
42
|
+
catch(EXIT_SYMBOL) do
|
|
43
|
+
loop do
|
|
44
|
+
job = queue.pop
|
|
45
|
+
job.call
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
require 'async'
|
|
2
|
+
require 'temporalio/bridge'
|
|
3
|
+
require 'temporalio/data_converter'
|
|
4
|
+
require 'temporalio/runtime'
|
|
5
|
+
require 'temporalio/worker/activity_worker'
|
|
6
|
+
require 'temporalio/worker/runner'
|
|
7
|
+
require 'temporalio/worker/thread_pool_executor'
|
|
8
|
+
|
|
9
|
+
module Temporalio
|
|
10
|
+
# Worker to process workflows and/or activities.
|
|
11
|
+
#
|
|
12
|
+
# Once created, workers can be run and shutdown explicitly via {#run} and {#shutdown}.
|
|
13
|
+
class Worker
|
|
14
|
+
# Run multiple workers and wait for them to be shut down.
|
|
15
|
+
#
|
|
16
|
+
# This will not return until shutdown is complete (and all running activities in all workers
|
|
17
|
+
# finished) and will raise if any of the workers raises a fatal error.
|
|
18
|
+
#
|
|
19
|
+
# @param workers [Array<Temporalio::Worker>] A list of the workers to be run.
|
|
20
|
+
# @param shutdown_signals [Array<String>] A list of process signals for the worker to stop on.
|
|
21
|
+
# This argument can not be used with a custom block.
|
|
22
|
+
#
|
|
23
|
+
# @yield Optionally you can provide a block by the end of which all the workers will be shut
|
|
24
|
+
# down. Any errors raised from this block will be re-raised by this method.
|
|
25
|
+
def self.run(*workers, shutdown_signals: [], &block)
|
|
26
|
+
unless shutdown_signals.empty?
|
|
27
|
+
if block
|
|
28
|
+
raise ArgumentError, 'Temporalio::Worker.run accepts :shutdown_signals or a block, but not both'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
signal_queue = Queue.new
|
|
32
|
+
|
|
33
|
+
shutdown_signals.each do |signal|
|
|
34
|
+
Signal.trap(signal) { signal_queue.close }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
block = -> { signal_queue.pop }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
Runner.new(*workers).run(&block)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Create a worker to process workflows and/or activities.
|
|
44
|
+
#
|
|
45
|
+
# @param connection [Temporalio::Connection] A connection to be used for this worker.
|
|
46
|
+
# @param namespace [String] A namespace.
|
|
47
|
+
# @param task_queue [String] A task queue.
|
|
48
|
+
# @param activities [Array<Class>] A list of activities (subclasses of {Temporalio::Activity}).
|
|
49
|
+
# @param data_converter [Temporalio::DataConverter] Data converter to use for all data conversions
|
|
50
|
+
# to/from payloads.
|
|
51
|
+
# @param activity_executor [ThreadPoolExecutor] Concurrent executor for all activities. Defaults
|
|
52
|
+
# to a {ThreadPoolExecutor} with `:max_concurrent_activities` available threads.
|
|
53
|
+
# @param max_concurrent_activities [Integer] Number of concurrently running activities.
|
|
54
|
+
# @param graceful_shutdown_timeout [Integer] Amount of time (in seconds) activities are given
|
|
55
|
+
# after a shutdown to complete before they are cancelled. A default value of `nil` means that
|
|
56
|
+
# activities are never cancelled when handling a shutdown.
|
|
57
|
+
#
|
|
58
|
+
# @raise [ArgumentError] When no activities or workflows have been provided.
|
|
59
|
+
def initialize(
|
|
60
|
+
connection,
|
|
61
|
+
namespace,
|
|
62
|
+
task_queue,
|
|
63
|
+
activities: [],
|
|
64
|
+
data_converter: Temporalio::DataConverter.new,
|
|
65
|
+
activity_executor: nil,
|
|
66
|
+
max_concurrent_activities: 100,
|
|
67
|
+
graceful_shutdown_timeout: nil
|
|
68
|
+
)
|
|
69
|
+
# TODO: Add worker interceptors
|
|
70
|
+
@started = false
|
|
71
|
+
@shutdown = false
|
|
72
|
+
@mutex = Mutex.new
|
|
73
|
+
@runtime = Temporalio::Runtime.instance
|
|
74
|
+
@activity_executor = activity_executor || ThreadPoolExecutor.new(max_concurrent_activities)
|
|
75
|
+
@core_worker = Temporalio::Bridge::Worker.create(
|
|
76
|
+
@runtime.core_runtime,
|
|
77
|
+
connection.core_connection,
|
|
78
|
+
namespace,
|
|
79
|
+
task_queue,
|
|
80
|
+
)
|
|
81
|
+
@activity_worker =
|
|
82
|
+
unless activities.empty?
|
|
83
|
+
Worker::ActivityWorker.new(
|
|
84
|
+
task_queue,
|
|
85
|
+
@core_worker,
|
|
86
|
+
activities,
|
|
87
|
+
data_converter,
|
|
88
|
+
@activity_executor,
|
|
89
|
+
graceful_shutdown_timeout,
|
|
90
|
+
)
|
|
91
|
+
end
|
|
92
|
+
@workflow_worker = nil
|
|
93
|
+
|
|
94
|
+
if !@activity_worker && !@workflow_worker
|
|
95
|
+
raise ArgumentError, 'At least one activity or workflow must be specified'
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Run the worker and wait on it to be shut down.
|
|
100
|
+
#
|
|
101
|
+
# This will not return until shutdown is complete (and all running activities finished) and will
|
|
102
|
+
# raise if there is a worker fatal error. To run multiple workers use the class method {.run}.
|
|
103
|
+
#
|
|
104
|
+
# @note A worker is only intended to be started once. Initialize a new worker should you need to
|
|
105
|
+
# run it again.
|
|
106
|
+
#
|
|
107
|
+
# @yield Optionally you can provide a block by the end of which the worker will shut itself
|
|
108
|
+
# down. You can use this to stop a worker after some time has passed, your workflow has
|
|
109
|
+
# finished or any other arbitrary implementation has completed. Any errors raised from this
|
|
110
|
+
# block will be re-raised by this method.
|
|
111
|
+
def run(&block)
|
|
112
|
+
Runner.new(self).run(&block)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# Start the worker asynchronously in a shared runtime.
|
|
116
|
+
#
|
|
117
|
+
# This is an internal method for advanced use-cases for those intended to implement their own
|
|
118
|
+
# worker runner.
|
|
119
|
+
#
|
|
120
|
+
# @note A worker is only intended to be started once. Initialize a new worker should you need to
|
|
121
|
+
# start it again.
|
|
122
|
+
#
|
|
123
|
+
# @api private
|
|
124
|
+
#
|
|
125
|
+
# @param runner [Temporalio::Worker::Runner] A runner to notify when the worker is shutting down.
|
|
126
|
+
def start(runner = nil)
|
|
127
|
+
mutex.synchronize do
|
|
128
|
+
raise 'Worker is already started' if started?
|
|
129
|
+
|
|
130
|
+
@started = true
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
@runner = runner
|
|
134
|
+
runtime.ensure_callback_loop
|
|
135
|
+
|
|
136
|
+
runtime.reactor.async do |task|
|
|
137
|
+
if activity_worker
|
|
138
|
+
task.async do |task|
|
|
139
|
+
activity_worker.run(task)
|
|
140
|
+
rescue StandardError => e
|
|
141
|
+
shutdown(e) # initiate shutdown because of a fatal error
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# TODO: Pending implementation
|
|
146
|
+
task.async { |task| workflow_worker.run(task) } if workflow_worker
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# Initiate a worker shutdown and wait until complete.
|
|
151
|
+
#
|
|
152
|
+
# This can be called before the worker has even started and is safe for repeated invocations.
|
|
153
|
+
# This method will not return until the worker has completed shutting down.
|
|
154
|
+
#
|
|
155
|
+
# @param exception [Exception] An exception to be raised from {#run} or {.run} methods after a
|
|
156
|
+
# shutdown procedure has completed.
|
|
157
|
+
def shutdown(exception = Temporalio::Error::WorkerShutdown.new('Manual shutdown'))
|
|
158
|
+
mutex.synchronize do
|
|
159
|
+
return unless running?
|
|
160
|
+
|
|
161
|
+
# First initiate Core shutdown, which will start dropping poll requests
|
|
162
|
+
core_worker.initiate_shutdown
|
|
163
|
+
# Then let the runner know we're shutting down, so it can stop other workers
|
|
164
|
+
runner&.shutdown(exception)
|
|
165
|
+
# Wait for workers to drain any outstanding tasks
|
|
166
|
+
activity_worker&.drain
|
|
167
|
+
workflow_worker&.drain
|
|
168
|
+
# Stop the executor (at this point there should already be nothing in it)
|
|
169
|
+
activity_executor.shutdown
|
|
170
|
+
# Finalize the shutdown by stopping the Core
|
|
171
|
+
core_worker.shutdown
|
|
172
|
+
|
|
173
|
+
@shutdown = true
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# Whether the worker has been started.
|
|
178
|
+
#
|
|
179
|
+
# @return [Boolean]
|
|
180
|
+
def started?
|
|
181
|
+
@started
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# Whether the worker is running.
|
|
185
|
+
#
|
|
186
|
+
# This is only `true` if the worker has been started and not yet shut down.
|
|
187
|
+
#
|
|
188
|
+
# @return [Boolean]
|
|
189
|
+
def running?
|
|
190
|
+
@started && !@shutdown
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
private
|
|
194
|
+
|
|
195
|
+
attr_reader :mutex, :runtime, :activity_executor, :core_worker, :activity_worker,
|
|
196
|
+
:workflow_worker, :runner
|
|
197
|
+
end
|
|
198
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require 'temporalio/errors'
|
|
2
|
+
require 'temporalio/workflow/execution_status'
|
|
3
|
+
require 'google/protobuf/well_known_types'
|
|
4
|
+
|
|
5
|
+
module Temporalio
|
|
6
|
+
class Workflow
|
|
7
|
+
class ExecutionInfo < Struct.new(
|
|
8
|
+
:raw,
|
|
9
|
+
:workflow,
|
|
10
|
+
:id,
|
|
11
|
+
:run_id,
|
|
12
|
+
:task_queue,
|
|
13
|
+
:status,
|
|
14
|
+
:parent_id,
|
|
15
|
+
:parent_run_id,
|
|
16
|
+
:start_time,
|
|
17
|
+
:close_time,
|
|
18
|
+
:execution_time,
|
|
19
|
+
:history_length,
|
|
20
|
+
:memo,
|
|
21
|
+
:search_attributes,
|
|
22
|
+
keyword_init: true,
|
|
23
|
+
)
|
|
24
|
+
def self.from_raw(response, converter)
|
|
25
|
+
raw_info = response.workflow_execution_info
|
|
26
|
+
raise Temporalio::Error::UnexpectedResponse, 'missing workflow_execution_info' unless raw_info
|
|
27
|
+
|
|
28
|
+
new(
|
|
29
|
+
raw: response,
|
|
30
|
+
workflow: raw_info.type&.name,
|
|
31
|
+
id: raw_info.execution&.workflow_id,
|
|
32
|
+
run_id: raw_info.execution&.run_id,
|
|
33
|
+
task_queue: raw_info.task_queue,
|
|
34
|
+
status: Workflow::ExecutionStatus.from_raw(raw_info.status),
|
|
35
|
+
parent_id: raw_info.parent_execution&.workflow_id,
|
|
36
|
+
parent_run_id: raw_info.parent_execution&.run_id,
|
|
37
|
+
start_time: raw_info.start_time&.to_time,
|
|
38
|
+
close_time: raw_info.close_time&.to_time,
|
|
39
|
+
execution_time: raw_info.execution_time&.to_time,
|
|
40
|
+
history_length: raw_info.history_length,
|
|
41
|
+
memo: converter.from_payload_map(raw_info.memo&.fields),
|
|
42
|
+
search_attributes: converter.from_payload_map(raw_info.search_attributes&.indexed_fields),
|
|
43
|
+
).freeze
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Helper methods for checking execution status
|
|
47
|
+
Workflow::ExecutionStatus::STATUSES.each do |status|
|
|
48
|
+
define_method("#{status.downcase}?") do
|
|
49
|
+
self.status == status
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Temporalio
|
|
2
|
+
class Workflow
|
|
3
|
+
module ExecutionStatus
|
|
4
|
+
STATUSES = [
|
|
5
|
+
RUNNING = :RUNNING,
|
|
6
|
+
COMPLETED = :COMPLETED,
|
|
7
|
+
FAILED = :FAILED,
|
|
8
|
+
CANCELED = :CANCELED,
|
|
9
|
+
TERMINATED = :TERMINATED,
|
|
10
|
+
CONTINUED_AS_NEW = :CONTINUED_AS_NEW,
|
|
11
|
+
TIMED_OUT = :TIMED_OUT,
|
|
12
|
+
].freeze
|
|
13
|
+
|
|
14
|
+
# RBS screws up style definitions when using .freeze
|
|
15
|
+
# rubocop:disable Style/MutableConstant
|
|
16
|
+
API_MAP = {
|
|
17
|
+
WORKFLOW_EXECUTION_STATUS_RUNNING: RUNNING,
|
|
18
|
+
WORKFLOW_EXECUTION_STATUS_COMPLETED: COMPLETED,
|
|
19
|
+
WORKFLOW_EXECUTION_STATUS_FAILED: FAILED,
|
|
20
|
+
WORKFLOW_EXECUTION_STATUS_CANCELED: CANCELED,
|
|
21
|
+
WORKFLOW_EXECUTION_STATUS_TERMINATED: TERMINATED,
|
|
22
|
+
WORKFLOW_EXECUTION_STATUS_CONTINUED_AS_NEW: CONTINUED_AS_NEW,
|
|
23
|
+
WORKFLOW_EXECUTION_STATUS_TIMED_OUT: TIMED_OUT,
|
|
24
|
+
}
|
|
25
|
+
# rubocop:enable Style/MutableConstant
|
|
26
|
+
|
|
27
|
+
def self.to_raw(status)
|
|
28
|
+
API_MAP.invert[status]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.from_raw(raw_status)
|
|
32
|
+
API_MAP[raw_status]
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'temporal/api/enums/v1/workflow_pb'
|
|
2
|
+
|
|
3
|
+
module Temporalio
|
|
4
|
+
class Workflow
|
|
5
|
+
# How already-in-use workflow IDs are handled on start.
|
|
6
|
+
#
|
|
7
|
+
# @see Temporalio::Api::Enums::V1::WorkflowIdReusePolicy
|
|
8
|
+
class IDReusePolicy
|
|
9
|
+
POLICIES = [
|
|
10
|
+
ALLOW_DUPLICATE = :ALLOW_DUPLICATE,
|
|
11
|
+
ALLOW_DUPLICATE_FAILED_ONLY = :ALLOW_DUPLICATE_FAILED_ONLY,
|
|
12
|
+
REJECT_DUPLICATE = :REJECT_DUPLICATE,
|
|
13
|
+
TERMINATE_IF_RUNNING = :TERMINATE_IF_RUNNING,
|
|
14
|
+
].freeze
|
|
15
|
+
|
|
16
|
+
API_MAP = {
|
|
17
|
+
Temporalio::Api::Enums::V1::WorkflowIdReusePolicy::WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE =>
|
|
18
|
+
ALLOW_DUPLICATE,
|
|
19
|
+
Temporalio::Api::Enums::V1::WorkflowIdReusePolicy::WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY =>
|
|
20
|
+
ALLOW_DUPLICATE_FAILED_ONLY,
|
|
21
|
+
Temporalio::Api::Enums::V1::WorkflowIdReusePolicy::WORKFLOW_ID_REUSE_POLICY_REJECT_DUPLICATE =>
|
|
22
|
+
REJECT_DUPLICATE,
|
|
23
|
+
Temporalio::Api::Enums::V1::WorkflowIdReusePolicy::WORKFLOW_ID_REUSE_POLICY_TERMINATE_IF_RUNNING =>
|
|
24
|
+
TERMINATE_IF_RUNNING,
|
|
25
|
+
}.freeze
|
|
26
|
+
|
|
27
|
+
def self.to_raw(policy)
|
|
28
|
+
API_MAP.invert[policy]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.from_raw(raw_policy)
|
|
32
|
+
API_MAP[raw_policy]
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'temporal/api/enums/v1/query_pb'
|
|
2
|
+
|
|
3
|
+
module Temporalio
|
|
4
|
+
class Workflow
|
|
5
|
+
# Whether a query should be rejected in certain conditions.
|
|
6
|
+
#
|
|
7
|
+
# @see Temporalio::Api::Enums::V1::QueryRejectCondition
|
|
8
|
+
module QueryRejectCondition
|
|
9
|
+
CONDITIONS = [
|
|
10
|
+
NONE = :NONE,
|
|
11
|
+
NOT_OPEN = :NOT_OPEN,
|
|
12
|
+
NOT_COMPLETED_CLEANLY = :NOT_COMPLETED_CLEANLY,
|
|
13
|
+
].freeze
|
|
14
|
+
|
|
15
|
+
API_MAP = {
|
|
16
|
+
Temporalio::Api::Enums::V1::QueryRejectCondition::QUERY_REJECT_CONDITION_NONE =>
|
|
17
|
+
NONE,
|
|
18
|
+
Temporalio::Api::Enums::V1::QueryRejectCondition::QUERY_REJECT_CONDITION_NOT_OPEN =>
|
|
19
|
+
NOT_OPEN,
|
|
20
|
+
Temporalio::Api::Enums::V1::QueryRejectCondition::QUERY_REJECT_CONDITION_NOT_COMPLETED_CLEANLY =>
|
|
21
|
+
NOT_COMPLETED_CLEANLY,
|
|
22
|
+
}.freeze
|
|
23
|
+
|
|
24
|
+
def self.to_raw(condition)
|
|
25
|
+
API_MAP.invert[condition]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.from_raw(raw_condition)
|
|
29
|
+
API_MAP[raw_condition]
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
data/lib/temporalio.rb
CHANGED
|
@@ -1 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
# Protoc wants all of its generated files on the LOAD_PATH
|
|
2
|
+
$LOAD_PATH << File.expand_path('./gen', File.dirname(__FILE__))
|
|
3
|
+
|
|
4
|
+
require 'temporalio/activity'
|
|
5
|
+
require 'temporalio/bridge'
|
|
6
|
+
require 'temporalio/client'
|
|
7
|
+
require 'temporalio/connection'
|
|
8
|
+
require 'temporalio/version'
|
|
9
|
+
require 'temporalio/worker'
|
|
10
|
+
|
|
11
|
+
module Temporalio
|
|
12
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'rbconfig'
|
|
2
|
+
|
|
3
|
+
module Thermite
|
|
4
|
+
class Config
|
|
5
|
+
# Thermite doesn't support cross-compilation so it always assumes the binary is being
|
|
6
|
+
# built for the current architecture. It only really affects the name of the tarball.
|
|
7
|
+
def target_arch
|
|
8
|
+
@target_arch ||= ENV.fetch('TARGET_ARCH', RbConfig::CONFIG['target_cpu'])
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Use the same target for all darwin versions
|
|
12
|
+
def target_os
|
|
13
|
+
@target_os ||= RbConfig::CONFIG['target_os'].sub(/darwin\d+/, 'darwin')
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Due to the lack of cross-compilation support, thermite assumes the resulting binary
|
|
17
|
+
# is placed in target/<profile>, however it's actually in target/<target_arch>/<profile>
|
|
18
|
+
def cargo_target_path(profile, *path_components)
|
|
19
|
+
target_base = ENV.fetch('CARGO_TARGET_DIR', File.join(rust_toplevel_dir, 'target'))
|
|
20
|
+
File.join(target_base, ENV.fetch('CARGO_BUILD_TARGET', ''), profile, *path_components)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
data/temporalio.gemspec
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require_relative './lib/temporalio/version'
|
|
2
|
+
|
|
3
|
+
Gem::Specification.new do |spec|
|
|
4
|
+
spec.name = 'temporalio'
|
|
5
|
+
spec.version = Temporalio::VERSION
|
|
6
|
+
spec.summary = 'Temporal.io Ruby SDK'
|
|
7
|
+
spec.description = 'An SDK for implementing Temporal.io workflows and activities in Ruby'
|
|
8
|
+
spec.homepage = 'https://github.com/temporalio/sdk-ruby'
|
|
9
|
+
spec.licenses = ['MIT']
|
|
10
|
+
|
|
11
|
+
spec.authors = ['Anthony D']
|
|
12
|
+
spec.email = ['anthony@temporal.io']
|
|
13
|
+
|
|
14
|
+
spec.require_paths = ['lib']
|
|
15
|
+
spec.extensions = ['ext/Rakefile']
|
|
16
|
+
|
|
17
|
+
spec.files =
|
|
18
|
+
Dir['lib/**/*.*'] +
|
|
19
|
+
Dir['bridge/**/*.*'].reject { |x| x.include?('/target/') } +
|
|
20
|
+
%w[ext/Rakefile temporalio.gemspec Gemfile LICENSE README.md]
|
|
21
|
+
|
|
22
|
+
# Limited by async. While we support both v1 and v2, we only allow Ruby >= 3
|
|
23
|
+
# since async v1 with Ruby 2 has a blocking behaviour (despite identical interface):
|
|
24
|
+
# https://github.com/socketry/async/discussions/108#discussioncomment-541788
|
|
25
|
+
spec.required_ruby_version = '>= 3.0.2'
|
|
26
|
+
|
|
27
|
+
spec.add_dependency 'async' # Fiber-based reactor. Open-ended to allow Ruby 3.1+ to use v2
|
|
28
|
+
spec.add_dependency 'google-protobuf', '~> 3.21.1' # Protobuf
|
|
29
|
+
spec.add_dependency 'rexml', '~> 3.2.5' # Implicitly required by thermite
|
|
30
|
+
spec.add_dependency 'rutie', '~> 0.0.4' # Rust bindings
|
|
31
|
+
spec.add_dependency 'thermite', '~> 0.13.0' # For compiling Rust ext
|
|
32
|
+
|
|
33
|
+
spec.add_development_dependency 'grpc' # Ruby GRPC for the mock server
|
|
34
|
+
spec.add_development_dependency 'grpc-tools' # GRPC generator for the mock server
|
|
35
|
+
spec.add_development_dependency 'protobuf' # Ruby implementation of protobufs (for rbs_protobuf)
|
|
36
|
+
spec.add_development_dependency 'pry' # Debugger
|
|
37
|
+
spec.add_development_dependency 'rake' # rake tasks
|
|
38
|
+
spec.add_development_dependency 'rbs_protobuf' # RBS generator for protobufs
|
|
39
|
+
spec.add_development_dependency 'rspec' # specs
|
|
40
|
+
spec.add_development_dependency 'rubocop' # linter
|
|
41
|
+
spec.add_development_dependency 'rubocop-rspec' # spec linter
|
|
42
|
+
spec.add_development_dependency 'steep' # type checker
|
|
43
|
+
spec.add_development_dependency 'typeprof' # type generator
|
|
44
|
+
spec.add_development_dependency 'yard' # docs
|
|
45
|
+
end
|