temporalio 0.0.1
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 +7 -0
- data/Gemfile +3 -0
- data/LICENSE +20 -0
- data/README.md +130 -0
- data/bridge/Cargo.lock +2865 -0
- data/bridge/Cargo.toml +26 -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 +107 -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/bridge-ffi/Cargo.toml +24 -0
- data/bridge/sdk-core/bridge-ffi/LICENSE.txt +23 -0
- data/bridge/sdk-core/bridge-ffi/build.rs +25 -0
- data/bridge/sdk-core/bridge-ffi/include/sdk-core-bridge.h +249 -0
- data/bridge/sdk-core/bridge-ffi/src/lib.rs +825 -0
- data/bridge/sdk-core/bridge-ffi/src/wrappers.rs +211 -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 +1294 -0
- data/bridge/sdk-core/client/src/metrics.rs +165 -0
- data/bridge/sdk-core/client/src/raw.rs +931 -0
- data/bridge/sdk-core/client/src/retry.rs +674 -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 +73 -0
- data/bridge/sdk-core/core/src/abstractions.rs +166 -0
- data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +911 -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 +515 -0
- data/bridge/sdk-core/core/src/core_tests/mod.rs +100 -0
- data/bridge/sdk-core/core/src/core_tests/queries.rs +736 -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 +2070 -0
- data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +515 -0
- data/bridge/sdk-core/core/src/lib.rs +175 -0
- data/bridge/sdk-core/core/src/log_export.rs +62 -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 +71 -0
- data/bridge/sdk-core/core/src/retry_logic.rs +202 -0
- data/bridge/sdk-core/core/src/telemetry/metrics.rs +383 -0
- data/bridge/sdk-core/core/src/telemetry/mod.rs +412 -0
- data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +77 -0
- data/bridge/sdk-core/core/src/test_help/mod.rs +875 -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 +1042 -0
- data/bridge/sdk-core/core/src/worker/activities.rs +464 -0
- data/bridge/sdk-core/core/src/worker/client/mocks.rs +87 -0
- data/bridge/sdk-core/core/src/worker/client.rs +347 -0
- data/bridge/sdk-core/core/src/worker/mod.rs +566 -0
- data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +37 -0
- data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +110 -0
- data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +458 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +911 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +298 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +171 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +860 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +140 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +161 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +133 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +1448 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +342 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/mutable_side_effect_state_machine.rs +127 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +712 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/side_effect_state_machine.rs +71 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +443 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +439 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +169 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +246 -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 +1184 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +277 -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 +647 -0
- data/bridge/sdk-core/core/src/worker/workflow/mod.rs +1143 -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 +940 -0
- data/bridge/sdk-core/core-api/Cargo.toml +31 -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 +151 -0
- data/bridge/sdk-core/core-api/src/worker.rs +135 -0
- data/bridge/sdk-core/etc/deps.svg +187 -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/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/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 +12 -0
- data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +141 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +86 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/cluster/v1/message.proto +83 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +259 -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 +46 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/cluster.proto +40 -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 +55 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +168 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +97 -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 +51 -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 +751 -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 +161 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +99 -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 +300 -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/update/v1/message.proto +46 -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 +145 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +1124 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +401 -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/bridge/bridge.proto +210 -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 +261 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +297 -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/conversions.rs +8 -0
- data/bridge/sdk-core/sdk/src/interceptors.rs +17 -0
- data/bridge/sdk-core/sdk/src/lib.rs +792 -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 +683 -0
- data/bridge/sdk-core/sdk/src/workflow_future.rs +503 -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 +108 -0
- data/bridge/sdk-core/sdk-core-protos/src/constants.rs +7 -0
- data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +497 -0
- data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +230 -0
- data/bridge/sdk-core/sdk-core-protos/src/lib.rs +1910 -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 +35 -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 +598 -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 +218 -0
- data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +146 -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 +634 -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 +137 -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 +587 -0
- data/bridge/sdk-core/tests/load_tests.rs +191 -0
- data/bridge/sdk-core/tests/main.rs +111 -0
- data/bridge/sdk-core/tests/runner.rs +93 -0
- data/bridge/src/connection.rs +167 -0
- data/bridge/src/lib.rs +180 -0
- data/bridge/src/runtime.rs +47 -0
- data/bridge/src/worker.rs +73 -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 +48 -0
- data/lib/gen/temporal/api/cluster/v1/message_pb.rb +67 -0
- data/lib/gen/temporal/api/command/v1/message_pb.rb +166 -0
- data/lib/gen/temporal/api/common/v1/message_pb.rb +69 -0
- data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +32 -0
- data/lib/gen/temporal/api/enums/v1/cluster_pb.rb +26 -0
- data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +37 -0
- data/lib/gen/temporal/api/enums/v1/common_pb.rb +41 -0
- data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +67 -0
- data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +71 -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 +28 -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 +489 -0
- data/lib/gen/temporal/api/namespace/v1/message_pb.rb +63 -0
- data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +125 -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 +128 -0
- data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +73 -0
- data/lib/gen/temporal/api/update/v1/message_pb.rb +26 -0
- data/lib/gen/temporal/api/version/v1/message_pb.rb +41 -0
- data/lib/gen/temporal/api/workflow/v1/message_pb.rb +110 -0
- data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +771 -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 +164 -0
- data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +192 -0
- data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +34 -0
- data/lib/temporal/bridge.rb +14 -0
- data/lib/temporal/client/implementation.rb +339 -0
- data/lib/temporal/client/workflow_handle.rb +243 -0
- data/lib/temporal/client.rb +144 -0
- data/lib/temporal/connection.rb +736 -0
- data/lib/temporal/data_converter.rb +150 -0
- data/lib/temporal/error/failure.rb +194 -0
- data/lib/temporal/error/workflow_failure.rb +17 -0
- data/lib/temporal/errors.rb +22 -0
- data/lib/temporal/failure_converter/base.rb +26 -0
- data/lib/temporal/failure_converter/basic.rb +313 -0
- data/lib/temporal/failure_converter.rb +8 -0
- data/lib/temporal/interceptor/chain.rb +27 -0
- data/lib/temporal/interceptor/client.rb +102 -0
- data/lib/temporal/payload_codec/base.rb +32 -0
- data/lib/temporal/payload_converter/base.rb +24 -0
- data/lib/temporal/payload_converter/bytes.rb +26 -0
- data/lib/temporal/payload_converter/composite.rb +47 -0
- data/lib/temporal/payload_converter/encoding_base.rb +35 -0
- data/lib/temporal/payload_converter/json.rb +25 -0
- data/lib/temporal/payload_converter/nil.rb +25 -0
- data/lib/temporal/payload_converter.rb +14 -0
- data/lib/temporal/retry_policy.rb +82 -0
- data/lib/temporal/retry_state.rb +35 -0
- data/lib/temporal/runtime.rb +22 -0
- data/lib/temporal/timeout_type.rb +29 -0
- data/lib/temporal/version.rb +3 -0
- data/lib/temporal/workflow/execution_info.rb +54 -0
- data/lib/temporal/workflow/execution_status.rb +36 -0
- data/lib/temporal/workflow/id_reuse_policy.rb +36 -0
- data/lib/temporal/workflow/query_reject_condition.rb +33 -0
- data/lib/temporal.rb +8 -0
- data/lib/temporalio.rb +3 -0
- data/lib/thermite_patch.rb +23 -0
- data/temporalio.gemspec +41 -0
- metadata +583 -0
@@ -0,0 +1,383 @@
|
|
1
|
+
use super::TELEM_SERVICE_NAME;
|
2
|
+
use crate::telemetry::GLOBAL_TELEM_DAT;
|
3
|
+
use opentelemetry::sdk::metrics::aggregators::Aggregator;
|
4
|
+
use opentelemetry::sdk::metrics::sdk_api::{Descriptor, InstrumentKind};
|
5
|
+
use opentelemetry::{
|
6
|
+
global,
|
7
|
+
metrics::{Counter, Histogram, Meter},
|
8
|
+
sdk::{
|
9
|
+
export::metrics::AggregatorSelector,
|
10
|
+
metrics::aggregators::{histogram, last_value, sum},
|
11
|
+
},
|
12
|
+
Context, KeyValue,
|
13
|
+
};
|
14
|
+
use std::{sync::Arc, time::Duration};
|
15
|
+
|
16
|
+
/// Used to track context associated with metrics, and record/update them
|
17
|
+
///
|
18
|
+
/// Possible improvement: make generic over some type tag so that methods are only exposed if the
|
19
|
+
/// appropriate k/vs have already been set.
|
20
|
+
#[derive(Default, Clone, Debug)]
|
21
|
+
pub(crate) struct MetricsContext {
|
22
|
+
ctx: Context,
|
23
|
+
kvs: Arc<Vec<KeyValue>>,
|
24
|
+
}
|
25
|
+
|
26
|
+
impl MetricsContext {
|
27
|
+
fn new(kvs: Vec<KeyValue>) -> Self {
|
28
|
+
Self {
|
29
|
+
ctx: Context::current(),
|
30
|
+
kvs: Arc::new(kvs),
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
pub(crate) fn top_level(namespace: String) -> Self {
|
35
|
+
Self::new(vec![KeyValue::new(KEY_NAMESPACE, namespace)])
|
36
|
+
}
|
37
|
+
|
38
|
+
pub(crate) fn with_task_q(mut self, tq: String) -> Self {
|
39
|
+
Arc::make_mut(&mut self.kvs).push(task_queue(tq));
|
40
|
+
self
|
41
|
+
}
|
42
|
+
|
43
|
+
/// Extend an existing metrics context with new attributes
|
44
|
+
pub(crate) fn with_new_attrs(&self, new_kvs: impl IntoIterator<Item = KeyValue>) -> Self {
|
45
|
+
let mut kvs = self.kvs.clone();
|
46
|
+
Arc::make_mut(&mut kvs).extend(new_kvs);
|
47
|
+
Self {
|
48
|
+
ctx: Context::current(),
|
49
|
+
kvs,
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
53
|
+
/// A workflow task queue poll succeeded
|
54
|
+
pub(crate) fn wf_tq_poll_ok(&self) {
|
55
|
+
WF_TASK_QUEUE_POLL_SUCCEED_COUNTER.add(&self.ctx, 1, &self.kvs);
|
56
|
+
}
|
57
|
+
|
58
|
+
/// A workflow task queue poll timed out / had empty response
|
59
|
+
pub(crate) fn wf_tq_poll_empty(&self) {
|
60
|
+
WF_TASK_QUEUE_POLL_EMPTY_COUNTER.add(&self.ctx, 1, &self.kvs);
|
61
|
+
}
|
62
|
+
|
63
|
+
/// A workflow task execution failed
|
64
|
+
pub(crate) fn wf_task_failed(&self) {
|
65
|
+
WF_TASK_EXECUTION_FAILURE_COUNTER.add(&self.ctx, 1, &self.kvs);
|
66
|
+
}
|
67
|
+
|
68
|
+
/// A workflow completed successfully
|
69
|
+
pub(crate) fn wf_completed(&self) {
|
70
|
+
WF_COMPLETED_COUNTER.add(&self.ctx, 1, &self.kvs);
|
71
|
+
}
|
72
|
+
|
73
|
+
/// A workflow ended cancelled
|
74
|
+
pub(crate) fn wf_canceled(&self) {
|
75
|
+
WF_CANCELED_COUNTER.add(&self.ctx, 1, &self.kvs);
|
76
|
+
}
|
77
|
+
|
78
|
+
/// A workflow ended failed
|
79
|
+
pub(crate) fn wf_failed(&self) {
|
80
|
+
WF_FAILED_COUNTER.add(&self.ctx, 1, &self.kvs);
|
81
|
+
}
|
82
|
+
|
83
|
+
/// A workflow continued as new
|
84
|
+
pub(crate) fn wf_continued_as_new(&self) {
|
85
|
+
WF_CONT_COUNTER.add(&self.ctx, 1, &self.kvs);
|
86
|
+
}
|
87
|
+
|
88
|
+
/// Record workflow total execution time in milliseconds
|
89
|
+
pub(crate) fn wf_e2e_latency(&self, dur: Duration) {
|
90
|
+
WF_E2E_LATENCY.record(&self.ctx, dur.as_millis() as u64, &self.kvs);
|
91
|
+
}
|
92
|
+
|
93
|
+
/// Record workflow task schedule to start time in millis
|
94
|
+
pub(crate) fn wf_task_sched_to_start_latency(&self, dur: Duration) {
|
95
|
+
WF_TASK_SCHED_TO_START_LATENCY.record(&self.ctx, dur.as_millis() as u64, &self.kvs);
|
96
|
+
}
|
97
|
+
|
98
|
+
/// Record workflow task execution time in milliseconds
|
99
|
+
pub(crate) fn wf_task_latency(&self, dur: Duration) {
|
100
|
+
WF_TASK_EXECUTION_LATENCY.record(&self.ctx, dur.as_millis() as u64, &self.kvs);
|
101
|
+
}
|
102
|
+
|
103
|
+
/// Record time it takes to catch up on replaying a WFT
|
104
|
+
pub(crate) fn wf_task_replay_latency(&self, dur: Duration) {
|
105
|
+
WF_TASK_REPLAY_LATENCY.record(&self.ctx, dur.as_millis() as u64, &self.kvs);
|
106
|
+
}
|
107
|
+
|
108
|
+
/// An activity long poll timed out
|
109
|
+
pub(crate) fn act_poll_timeout(&self) {
|
110
|
+
ACT_POLL_NO_TASK.add(&self.ctx, 1, &self.kvs);
|
111
|
+
}
|
112
|
+
|
113
|
+
/// An activity execution failed
|
114
|
+
pub(crate) fn act_execution_failed(&self) {
|
115
|
+
ACT_EXECUTION_FAILED.add(&self.ctx, 1, &self.kvs);
|
116
|
+
}
|
117
|
+
|
118
|
+
/// Record activity task schedule to start time in millis
|
119
|
+
pub(crate) fn act_sched_to_start_latency(&self, dur: Duration) {
|
120
|
+
ACT_SCHED_TO_START_LATENCY.record(&self.ctx, dur.as_millis() as u64, &self.kvs);
|
121
|
+
}
|
122
|
+
|
123
|
+
/// Record time it took to complete activity execution, from the time core generated the
|
124
|
+
/// activity task, to the time lang responded with a completion (failure or success).
|
125
|
+
pub(crate) fn act_execution_latency(&self, dur: Duration) {
|
126
|
+
ACT_EXEC_LATENCY.record(&self.ctx, dur.as_millis() as u64, &self.kvs);
|
127
|
+
}
|
128
|
+
|
129
|
+
/// A worker was registered
|
130
|
+
pub(crate) fn worker_registered(&self) {
|
131
|
+
WORKER_REGISTERED.add(&self.ctx, 1, &self.kvs);
|
132
|
+
}
|
133
|
+
|
134
|
+
/// Record current number of available task slots. Context should have worker type set.
|
135
|
+
pub(crate) fn available_task_slots(&self, num: usize) {
|
136
|
+
TASK_SLOTS_AVAILABLE.record(&self.ctx, num as u64, &self.kvs)
|
137
|
+
}
|
138
|
+
|
139
|
+
/// Record current number of pollers. Context should include poller type / task queue tag.
|
140
|
+
pub(crate) fn record_num_pollers(&self, num: usize) {
|
141
|
+
NUM_POLLERS.record(&self.ctx, num as u64, &self.kvs);
|
142
|
+
}
|
143
|
+
|
144
|
+
/// A workflow task found a cached workflow to run against
|
145
|
+
pub(crate) fn sticky_cache_hit(&self) {
|
146
|
+
STICKY_CACHE_HIT.add(&self.ctx, 1, &self.kvs);
|
147
|
+
}
|
148
|
+
|
149
|
+
/// A workflow task did not find a cached workflow
|
150
|
+
pub(crate) fn sticky_cache_miss(&self) {
|
151
|
+
STICKY_CACHE_MISS.add(&self.ctx, 1, &self.kvs);
|
152
|
+
}
|
153
|
+
|
154
|
+
/// Record current cache size (in number of wfs, not bytes)
|
155
|
+
pub(crate) fn cache_size(&self, size: u64) {
|
156
|
+
STICKY_CACHE_SIZE.record(&self.ctx, size, &self.kvs);
|
157
|
+
}
|
158
|
+
}
|
159
|
+
|
160
|
+
lazy_static::lazy_static! {
|
161
|
+
pub(crate) static ref METRIC_METER: Meter = {
|
162
|
+
#[cfg(not(test))]
|
163
|
+
if crate::telemetry::GLOBAL_TELEM_DAT.get().is_none() {
|
164
|
+
panic!("Tried to use a metric but telemetry has not been initialized")
|
165
|
+
}
|
166
|
+
global::meter(TELEM_SERVICE_NAME)
|
167
|
+
};
|
168
|
+
}
|
169
|
+
fn metric_prefix() -> &'static str {
|
170
|
+
GLOBAL_TELEM_DAT
|
171
|
+
.get()
|
172
|
+
.map(|gtd| {
|
173
|
+
if gtd.no_temporal_prefix_for_metrics {
|
174
|
+
""
|
175
|
+
} else {
|
176
|
+
"temporal_"
|
177
|
+
}
|
178
|
+
})
|
179
|
+
.unwrap_or("")
|
180
|
+
}
|
181
|
+
|
182
|
+
/// Define a temporal metric. All metrics are kept private to this file, and should be accessed
|
183
|
+
/// through functions on the [MetricsContext]
|
184
|
+
macro_rules! tm {
|
185
|
+
(ctr, $ident:ident, $name:expr) => {
|
186
|
+
lazy_static::lazy_static! {
|
187
|
+
static ref $ident: Counter<u64> = {
|
188
|
+
METRIC_METER.u64_counter(metric_prefix().to_string() + $name).init()
|
189
|
+
};
|
190
|
+
}
|
191
|
+
};
|
192
|
+
(vr_u64, $ident:ident, $name:expr) => {
|
193
|
+
lazy_static::lazy_static! {
|
194
|
+
static ref $ident: Histogram<u64> = {
|
195
|
+
METRIC_METER.u64_histogram(metric_prefix().to_string() + $name).init()
|
196
|
+
};
|
197
|
+
}
|
198
|
+
};
|
199
|
+
}
|
200
|
+
|
201
|
+
const KEY_NAMESPACE: &str = "namespace";
|
202
|
+
const KEY_WF_TYPE: &str = "workflow_type";
|
203
|
+
const KEY_TASK_QUEUE: &str = "task_queue";
|
204
|
+
const KEY_ACT_TYPE: &str = "activity_type";
|
205
|
+
const KEY_POLLER_TYPE: &str = "poller_type";
|
206
|
+
const KEY_WORKER_TYPE: &str = "worker_type";
|
207
|
+
|
208
|
+
pub(crate) fn workflow_poller() -> KeyValue {
|
209
|
+
KeyValue::new(KEY_POLLER_TYPE, "workflow_task")
|
210
|
+
}
|
211
|
+
pub(crate) fn workflow_sticky_poller() -> KeyValue {
|
212
|
+
KeyValue::new(KEY_POLLER_TYPE, "sticky_workflow_task")
|
213
|
+
}
|
214
|
+
pub(crate) fn activity_poller() -> KeyValue {
|
215
|
+
KeyValue::new(KEY_POLLER_TYPE, "activity_task")
|
216
|
+
}
|
217
|
+
pub(crate) fn task_queue(tq: String) -> KeyValue {
|
218
|
+
KeyValue::new(KEY_TASK_QUEUE, tq)
|
219
|
+
}
|
220
|
+
pub(crate) fn activity_type(ty: String) -> KeyValue {
|
221
|
+
KeyValue::new(KEY_ACT_TYPE, ty)
|
222
|
+
}
|
223
|
+
pub(crate) fn workflow_type(ty: String) -> KeyValue {
|
224
|
+
KeyValue::new(KEY_WF_TYPE, ty)
|
225
|
+
}
|
226
|
+
pub(crate) fn workflow_worker_type() -> KeyValue {
|
227
|
+
KeyValue {
|
228
|
+
key: opentelemetry::Key::from_static_str(KEY_WORKER_TYPE),
|
229
|
+
value: opentelemetry::Value::String("WorkflowWorker".into()),
|
230
|
+
}
|
231
|
+
}
|
232
|
+
pub(crate) fn activity_worker_type() -> KeyValue {
|
233
|
+
KeyValue {
|
234
|
+
key: opentelemetry::Key::from_static_str(KEY_WORKER_TYPE),
|
235
|
+
value: opentelemetry::Value::String("ActivityWorker".into()),
|
236
|
+
}
|
237
|
+
}
|
238
|
+
pub(crate) fn local_activity_worker_type() -> KeyValue {
|
239
|
+
KeyValue {
|
240
|
+
key: opentelemetry::Key::from_static_str(KEY_WORKER_TYPE),
|
241
|
+
value: opentelemetry::Value::String("LocalActivityWorker".into()),
|
242
|
+
}
|
243
|
+
}
|
244
|
+
|
245
|
+
tm!(ctr, WF_COMPLETED_COUNTER, "workflow_completed");
|
246
|
+
tm!(ctr, WF_CANCELED_COUNTER, "workflow_canceled");
|
247
|
+
tm!(ctr, WF_FAILED_COUNTER, "workflow_failed");
|
248
|
+
tm!(ctr, WF_CONT_COUNTER, "workflow_continue_as_new");
|
249
|
+
const WF_E2E_LATENCY_NAME: &str = "workflow_endtoend_latency";
|
250
|
+
tm!(vr_u64, WF_E2E_LATENCY, WF_E2E_LATENCY_NAME);
|
251
|
+
|
252
|
+
tm!(
|
253
|
+
ctr,
|
254
|
+
WF_TASK_QUEUE_POLL_EMPTY_COUNTER,
|
255
|
+
"workflow_task_queue_poll_empty"
|
256
|
+
);
|
257
|
+
tm!(
|
258
|
+
ctr,
|
259
|
+
WF_TASK_QUEUE_POLL_SUCCEED_COUNTER,
|
260
|
+
"workflow_task_queue_poll_succeed"
|
261
|
+
);
|
262
|
+
tm!(
|
263
|
+
ctr,
|
264
|
+
WF_TASK_EXECUTION_FAILURE_COUNTER,
|
265
|
+
"workflow_task_execution_failed"
|
266
|
+
);
|
267
|
+
const WF_TASK_SCHED_TO_START_LATENCY_NAME: &str = "workflow_task_schedule_to_start_latency";
|
268
|
+
tm!(
|
269
|
+
vr_u64,
|
270
|
+
WF_TASK_SCHED_TO_START_LATENCY,
|
271
|
+
WF_TASK_SCHED_TO_START_LATENCY_NAME
|
272
|
+
);
|
273
|
+
const WF_TASK_REPLAY_LATENCY_NAME: &str = "workflow_task_replay_latency";
|
274
|
+
tm!(vr_u64, WF_TASK_REPLAY_LATENCY, WF_TASK_REPLAY_LATENCY_NAME);
|
275
|
+
const WF_TASK_EXECUTION_LATENCY_NAME: &str = "workflow_task_execution_latency";
|
276
|
+
tm!(
|
277
|
+
vr_u64,
|
278
|
+
WF_TASK_EXECUTION_LATENCY,
|
279
|
+
WF_TASK_EXECUTION_LATENCY_NAME
|
280
|
+
);
|
281
|
+
|
282
|
+
tm!(ctr, ACT_POLL_NO_TASK, "activity_poll_no_task");
|
283
|
+
tm!(ctr, ACT_EXECUTION_FAILED, "activity_execution_failed");
|
284
|
+
// Act task unregistered can't be known by core right now since it's not well defined as an
|
285
|
+
// activity result. We could add a flag to the failed activity result if desired.
|
286
|
+
const ACT_SCHED_TO_START_LATENCY_NAME: &str = "activity_schedule_to_start_latency";
|
287
|
+
tm!(
|
288
|
+
vr_u64,
|
289
|
+
ACT_SCHED_TO_START_LATENCY,
|
290
|
+
ACT_SCHED_TO_START_LATENCY_NAME
|
291
|
+
);
|
292
|
+
const ACT_EXEC_LATENCY_NAME: &str = "activity_execution_latency";
|
293
|
+
tm!(vr_u64, ACT_EXEC_LATENCY, ACT_EXEC_LATENCY_NAME);
|
294
|
+
|
295
|
+
// name kept as worker start for compat with old sdk / what users expect
|
296
|
+
tm!(ctr, WORKER_REGISTERED, "worker_start");
|
297
|
+
const NUM_POLLERS_NAME: &str = "num_pollers";
|
298
|
+
tm!(vr_u64, NUM_POLLERS, NUM_POLLERS_NAME);
|
299
|
+
const TASK_SLOTS_AVAILABLE_NAME: &str = "worker_task_slots_available";
|
300
|
+
tm!(vr_u64, TASK_SLOTS_AVAILABLE, TASK_SLOTS_AVAILABLE_NAME);
|
301
|
+
|
302
|
+
tm!(ctr, STICKY_CACHE_HIT, "sticky_cache_hit");
|
303
|
+
tm!(ctr, STICKY_CACHE_MISS, "sticky_cache_miss");
|
304
|
+
const STICKY_CACHE_SIZE_NAME: &str = "sticky_cache_size";
|
305
|
+
tm!(vr_u64, STICKY_CACHE_SIZE, STICKY_CACHE_SIZE_NAME);
|
306
|
+
|
307
|
+
/// Artisanal, handcrafted latency buckets for workflow e2e latency which should expose a useful
|
308
|
+
/// set of buckets for < 1 day runtime workflows. Beyond that, this metric probably isn't very
|
309
|
+
/// helpful
|
310
|
+
static WF_LATENCY_MS_BUCKETS: &[f64] = &[
|
311
|
+
100.,
|
312
|
+
500.,
|
313
|
+
1000.,
|
314
|
+
1500.,
|
315
|
+
2000.,
|
316
|
+
5000.,
|
317
|
+
10_000.,
|
318
|
+
30_000.,
|
319
|
+
60_000.,
|
320
|
+
120_000.,
|
321
|
+
300_000.,
|
322
|
+
600_000.,
|
323
|
+
1_800_000., // 30 min
|
324
|
+
3_600_000., // 1 hr
|
325
|
+
30_600_000., // 10 hrs
|
326
|
+
8.64e7, // 24 hrs
|
327
|
+
];
|
328
|
+
|
329
|
+
/// Task latencies are expected to be fast, no longer than a second which was generally the deadlock
|
330
|
+
/// timeout in old SDKs. Here it's a bit different since a WFT may represent multiple activations.
|
331
|
+
static WF_TASK_MS_BUCKETS: &[f64] = &[1., 10., 20., 50., 100., 200., 500., 1000.];
|
332
|
+
|
333
|
+
/// Activity are generally expected to take at least a little time, and sometimes quite a while,
|
334
|
+
/// since they're doing side-effecty things, etc.
|
335
|
+
static ACT_EXE_MS_BUCKETS: &[f64] = &[50., 100., 500., 1000., 5000., 10_000., 60_000.];
|
336
|
+
|
337
|
+
/// Schedule-to-start latency buckets for both WFT and AT
|
338
|
+
static TASK_SCHED_TO_START_MS_BUCKETS: &[f64] = &[100., 500., 1000., 5000., 10_000.];
|
339
|
+
|
340
|
+
/// Default buckets. Should never really be used as they will be meaningless for many things, but
|
341
|
+
/// broadly it's trying to represent latencies in millis.
|
342
|
+
pub(super) static DEFAULT_MS_BUCKETS: &[f64] = &[50., 100., 500., 1000., 2500., 10_000.];
|
343
|
+
|
344
|
+
/// Chooses appropriate aggregators for our metrics
|
345
|
+
#[derive(Debug)]
|
346
|
+
pub struct SDKAggSelector;
|
347
|
+
|
348
|
+
impl AggregatorSelector for SDKAggSelector {
|
349
|
+
fn aggregator_for(&self, descriptor: &Descriptor) -> Option<Arc<dyn Aggregator + Send + Sync>> {
|
350
|
+
// Gauges are always last value
|
351
|
+
if *descriptor.instrument_kind() == InstrumentKind::GaugeObserver {
|
352
|
+
return Some(Arc::new(last_value()));
|
353
|
+
}
|
354
|
+
|
355
|
+
if *descriptor.instrument_kind() == InstrumentKind::Histogram {
|
356
|
+
let dname = descriptor
|
357
|
+
.name()
|
358
|
+
.strip_prefix(metric_prefix())
|
359
|
+
.unwrap_or_else(|| descriptor.name());
|
360
|
+
// Some recorders are just gauges
|
361
|
+
match dname {
|
362
|
+
STICKY_CACHE_SIZE_NAME | NUM_POLLERS_NAME | TASK_SLOTS_AVAILABLE_NAME => {
|
363
|
+
return Some(Arc::new(last_value()))
|
364
|
+
}
|
365
|
+
_ => (),
|
366
|
+
}
|
367
|
+
|
368
|
+
// Other recorders will select their appropriate buckets
|
369
|
+
let buckets = match dname {
|
370
|
+
WF_E2E_LATENCY_NAME => WF_LATENCY_MS_BUCKETS,
|
371
|
+
WF_TASK_EXECUTION_LATENCY_NAME | WF_TASK_REPLAY_LATENCY_NAME => WF_TASK_MS_BUCKETS,
|
372
|
+
WF_TASK_SCHED_TO_START_LATENCY_NAME | ACT_SCHED_TO_START_LATENCY_NAME => {
|
373
|
+
TASK_SCHED_TO_START_MS_BUCKETS
|
374
|
+
}
|
375
|
+
ACT_EXEC_LATENCY_NAME => ACT_EXE_MS_BUCKETS,
|
376
|
+
_ => DEFAULT_MS_BUCKETS,
|
377
|
+
};
|
378
|
+
return Some(Arc::new(histogram(buckets)));
|
379
|
+
}
|
380
|
+
|
381
|
+
Some(Arc::new(sum()))
|
382
|
+
}
|
383
|
+
}
|