temporalio 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (585) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +4035 -0
  3. data/Cargo.toml +25 -0
  4. data/Gemfile +20 -0
  5. data/LICENSE +16 -15
  6. data/README.md +455 -195
  7. data/Rakefile +387 -0
  8. data/ext/Cargo.toml +25 -0
  9. data/lib/temporalio/activity/complete_async_error.rb +11 -0
  10. data/lib/temporalio/activity/context.rb +82 -77
  11. data/lib/temporalio/activity/definition.rb +77 -0
  12. data/lib/temporalio/activity/info.rb +42 -46
  13. data/lib/temporalio/activity.rb +49 -65
  14. data/lib/temporalio/api/batch/v1/message.rb +31 -0
  15. data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +93 -0
  16. data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
  17. data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
  18. data/lib/temporalio/api/cloud/identity/v1/message.rb +36 -0
  19. data/lib/temporalio/api/cloud/namespace/v1/message.rb +35 -0
  20. data/lib/temporalio/api/cloud/operation/v1/message.rb +27 -0
  21. data/lib/temporalio/api/cloud/region/v1/message.rb +23 -0
  22. data/lib/temporalio/api/command/v1/message.rb +46 -0
  23. data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
  24. data/lib/temporalio/api/common/v1/message.rb +41 -0
  25. data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
  26. data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
  27. data/lib/temporalio/api/enums/v1/common.rb +26 -0
  28. data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
  29. data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
  30. data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
  31. data/lib/temporalio/api/enums/v1/query.rb +22 -0
  32. data/lib/temporalio/api/enums/v1/reset.rb +23 -0
  33. data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
  34. data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
  35. data/lib/temporalio/api/enums/v1/update.rb +22 -0
  36. data/lib/temporalio/api/enums/v1/workflow.rb +30 -0
  37. data/lib/temporalio/api/errordetails/v1/message.rb +42 -0
  38. data/lib/temporalio/api/export/v1/message.rb +24 -0
  39. data/lib/temporalio/api/failure/v1/message.rb +35 -0
  40. data/lib/temporalio/api/filter/v1/message.rb +27 -0
  41. data/lib/temporalio/api/history/v1/message.rb +90 -0
  42. data/lib/temporalio/api/namespace/v1/message.rb +31 -0
  43. data/lib/temporalio/api/nexus/v1/message.rb +40 -0
  44. data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
  45. data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
  46. data/lib/temporalio/api/operatorservice.rb +3 -0
  47. data/lib/temporalio/api/protocol/v1/message.rb +23 -0
  48. data/lib/temporalio/api/query/v1/message.rb +27 -0
  49. data/lib/temporalio/api/replication/v1/message.rb +26 -0
  50. data/lib/temporalio/api/schedule/v1/message.rb +42 -0
  51. data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
  52. data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
  53. data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
  54. data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
  55. data/lib/temporalio/api/taskqueue/v1/message.rb +45 -0
  56. data/lib/temporalio/api/update/v1/message.rb +33 -0
  57. data/lib/temporalio/api/version/v1/message.rb +26 -0
  58. data/lib/temporalio/api/workflow/v1/message.rb +43 -0
  59. data/lib/temporalio/api/workflowservice/v1/request_response.rb +189 -0
  60. data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
  61. data/lib/temporalio/api/workflowservice.rb +3 -0
  62. data/lib/temporalio/api.rb +13 -0
  63. data/lib/temporalio/cancellation.rb +150 -0
  64. data/lib/temporalio/client/activity_id_reference.rb +32 -0
  65. data/lib/temporalio/client/async_activity_handle.rb +110 -0
  66. data/lib/temporalio/client/connection/cloud_service.rb +648 -0
  67. data/lib/temporalio/client/connection/operator_service.rb +249 -0
  68. data/lib/temporalio/client/connection/service.rb +41 -0
  69. data/lib/temporalio/client/connection/workflow_service.rb +1218 -0
  70. data/lib/temporalio/client/connection.rb +270 -0
  71. data/lib/temporalio/client/interceptor.rb +316 -0
  72. data/lib/temporalio/client/workflow_execution.rb +103 -0
  73. data/lib/temporalio/client/workflow_execution_count.rb +36 -0
  74. data/lib/temporalio/client/workflow_execution_status.rb +18 -0
  75. data/lib/temporalio/client/workflow_handle.rb +380 -177
  76. data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
  77. data/lib/temporalio/client/workflow_update_handle.rb +67 -0
  78. data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
  79. data/lib/temporalio/client.rb +366 -93
  80. data/lib/temporalio/common_enums.rb +24 -0
  81. data/lib/temporalio/converters/data_converter.rb +102 -0
  82. data/lib/temporalio/converters/failure_converter.rb +200 -0
  83. data/lib/temporalio/converters/payload_codec.rb +26 -0
  84. data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
  85. data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
  86. data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
  87. data/lib/temporalio/converters/payload_converter/composite.rb +62 -0
  88. data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
  89. data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
  90. data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
  91. data/lib/temporalio/converters/payload_converter.rb +73 -0
  92. data/lib/temporalio/converters.rb +9 -0
  93. data/lib/temporalio/error/failure.rb +119 -94
  94. data/lib/temporalio/error.rb +147 -0
  95. data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
  96. data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +31 -0
  97. data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
  98. data/lib/temporalio/internal/bridge/api/common/common.rb +26 -0
  99. data/lib/temporalio/internal/bridge/api/core_interface.rb +36 -0
  100. data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
  101. data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +52 -0
  102. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +54 -0
  103. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +30 -0
  104. data/lib/temporalio/internal/bridge/api.rb +3 -0
  105. data/lib/temporalio/internal/bridge/client.rb +90 -0
  106. data/lib/temporalio/internal/bridge/runtime.rb +53 -0
  107. data/lib/temporalio/internal/bridge/testing.rb +46 -0
  108. data/lib/temporalio/internal/bridge/worker.rb +83 -0
  109. data/lib/temporalio/internal/bridge.rb +36 -0
  110. data/lib/temporalio/internal/client/implementation.rb +525 -0
  111. data/lib/temporalio/internal/proto_utils.rb +54 -0
  112. data/lib/temporalio/internal/worker/activity_worker.rb +345 -0
  113. data/lib/temporalio/internal/worker/multi_runner.rb +169 -0
  114. data/lib/temporalio/internal.rb +7 -0
  115. data/lib/temporalio/retry_policy.rb +39 -80
  116. data/lib/temporalio/runtime.rb +259 -13
  117. data/lib/temporalio/scoped_logger.rb +96 -0
  118. data/lib/temporalio/search_attributes.rb +300 -0
  119. data/lib/temporalio/testing/activity_environment.rb +132 -0
  120. data/lib/temporalio/testing/workflow_environment.rb +113 -88
  121. data/lib/temporalio/testing.rb +4 -169
  122. data/lib/temporalio/version.rb +3 -1
  123. data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
  124. data/lib/temporalio/worker/activity_executor/thread_pool.rb +254 -0
  125. data/lib/temporalio/worker/activity_executor.rb +55 -0
  126. data/lib/temporalio/worker/interceptor.rb +88 -0
  127. data/lib/temporalio/worker/tuner.rb +151 -0
  128. data/lib/temporalio/worker.rb +385 -163
  129. data/lib/temporalio/workflow_history.rb +22 -0
  130. data/lib/temporalio.rb +2 -7
  131. data/temporalio.gemspec +20 -39
  132. metadata +131 -712
  133. data/bridge/Cargo.lock +0 -2997
  134. data/bridge/Cargo.toml +0 -29
  135. data/bridge/sdk-core/ARCHITECTURE.md +0 -76
  136. data/bridge/sdk-core/Cargo.toml +0 -2
  137. data/bridge/sdk-core/LICENSE.txt +0 -23
  138. data/bridge/sdk-core/README.md +0 -117
  139. data/bridge/sdk-core/arch_docs/diagrams/README.md +0 -10
  140. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +0 -40
  141. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
  142. data/bridge/sdk-core/arch_docs/sticky_queues.md +0 -51
  143. data/bridge/sdk-core/client/Cargo.toml +0 -40
  144. data/bridge/sdk-core/client/LICENSE.txt +0 -23
  145. data/bridge/sdk-core/client/src/lib.rs +0 -1462
  146. data/bridge/sdk-core/client/src/metrics.rs +0 -174
  147. data/bridge/sdk-core/client/src/raw.rs +0 -932
  148. data/bridge/sdk-core/client/src/retry.rs +0 -763
  149. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +0 -185
  150. data/bridge/sdk-core/core/Cargo.toml +0 -129
  151. data/bridge/sdk-core/core/LICENSE.txt +0 -23
  152. data/bridge/sdk-core/core/benches/workflow_replay.rs +0 -76
  153. data/bridge/sdk-core/core/src/abstractions.rs +0 -355
  154. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +0 -1049
  155. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +0 -221
  156. data/bridge/sdk-core/core/src/core_tests/determinism.rs +0 -270
  157. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +0 -1046
  158. data/bridge/sdk-core/core/src/core_tests/mod.rs +0 -100
  159. data/bridge/sdk-core/core/src/core_tests/queries.rs +0 -893
  160. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +0 -65
  161. data/bridge/sdk-core/core/src/core_tests/workers.rs +0 -257
  162. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +0 -124
  163. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +0 -2433
  164. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +0 -609
  165. data/bridge/sdk-core/core/src/internal_flags.rs +0 -136
  166. data/bridge/sdk-core/core/src/lib.rs +0 -289
  167. data/bridge/sdk-core/core/src/pollers/mod.rs +0 -54
  168. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +0 -297
  169. data/bridge/sdk-core/core/src/protosext/mod.rs +0 -428
  170. data/bridge/sdk-core/core/src/replay/mod.rs +0 -215
  171. data/bridge/sdk-core/core/src/retry_logic.rs +0 -202
  172. data/bridge/sdk-core/core/src/telemetry/log_export.rs +0 -190
  173. data/bridge/sdk-core/core/src/telemetry/metrics.rs +0 -462
  174. data/bridge/sdk-core/core/src/telemetry/mod.rs +0 -423
  175. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +0 -83
  176. data/bridge/sdk-core/core/src/test_help/mod.rs +0 -939
  177. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +0 -536
  178. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +0 -89
  179. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +0 -1278
  180. data/bridge/sdk-core/core/src/worker/activities.rs +0 -557
  181. data/bridge/sdk-core/core/src/worker/client/mocks.rs +0 -107
  182. data/bridge/sdk-core/core/src/worker/client.rs +0 -389
  183. data/bridge/sdk-core/core/src/worker/mod.rs +0 -677
  184. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
  185. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +0 -99
  186. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +0 -1111
  187. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +0 -964
  188. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +0 -294
  189. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -168
  190. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +0 -918
  191. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +0 -137
  192. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +0 -158
  193. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +0 -130
  194. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +0 -1525
  195. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +0 -324
  196. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +0 -179
  197. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -659
  198. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +0 -439
  199. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +0 -435
  200. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +0 -175
  201. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +0 -249
  202. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +0 -85
  203. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +0 -1280
  204. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +0 -269
  205. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -213
  206. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +0 -1305
  207. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +0 -1276
  208. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +0 -128
  209. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +0 -125
  210. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +0 -85
  211. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +0 -117
  212. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +0 -24
  213. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +0 -715
  214. data/bridge/sdk-core/core-api/Cargo.toml +0 -33
  215. data/bridge/sdk-core/core-api/LICENSE.txt +0 -23
  216. data/bridge/sdk-core/core-api/src/errors.rs +0 -62
  217. data/bridge/sdk-core/core-api/src/lib.rs +0 -113
  218. data/bridge/sdk-core/core-api/src/telemetry.rs +0 -141
  219. data/bridge/sdk-core/core-api/src/worker.rs +0 -161
  220. data/bridge/sdk-core/etc/deps.svg +0 -162
  221. data/bridge/sdk-core/etc/dynamic-config.yaml +0 -2
  222. data/bridge/sdk-core/etc/otel-collector-config.yaml +0 -36
  223. data/bridge/sdk-core/etc/prometheus.yaml +0 -6
  224. data/bridge/sdk-core/etc/regen-depgraph.sh +0 -5
  225. data/bridge/sdk-core/fsm/Cargo.toml +0 -18
  226. data/bridge/sdk-core/fsm/LICENSE.txt +0 -23
  227. data/bridge/sdk-core/fsm/README.md +0 -3
  228. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  229. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -23
  230. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +0 -650
  231. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  232. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +0 -18
  233. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  234. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +0 -41
  235. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +0 -14
  236. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +0 -11
  237. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +0 -32
  238. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +0 -31
  239. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +0 -46
  240. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +0 -29
  241. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -12
  242. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +0 -32
  243. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +0 -18
  244. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  245. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +0 -11
  246. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  247. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +0 -11
  248. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  249. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  250. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -23
  251. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +0 -254
  252. data/bridge/sdk-core/fsm/src/lib.rs +0 -2
  253. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  254. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  255. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  256. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  257. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  258. data/bridge/sdk-core/integ-with-otel.sh +0 -7
  259. data/bridge/sdk-core/protos/api_upstream/README.md +0 -9
  260. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
  261. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -9
  262. data/bridge/sdk-core/protos/api_upstream/build/go.mod +0 -7
  263. data/bridge/sdk-core/protos/api_upstream/build/go.sum +0 -5
  264. data/bridge/sdk-core/protos/api_upstream/build/tools.go +0 -29
  265. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +0 -141
  266. data/bridge/sdk-core/protos/api_upstream/go.mod +0 -6
  267. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -89
  268. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +0 -248
  269. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +0 -123
  270. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -47
  271. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -52
  272. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -56
  273. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -170
  274. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -123
  275. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -51
  276. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -50
  277. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -41
  278. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -60
  279. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -59
  280. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -56
  281. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -122
  282. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -108
  283. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -114
  284. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -56
  285. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +0 -787
  286. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -99
  287. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -124
  288. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -80
  289. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -57
  290. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +0 -61
  291. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -55
  292. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -379
  293. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -63
  294. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -108
  295. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +0 -111
  296. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +0 -59
  297. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -146
  298. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -1199
  299. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -415
  300. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +0 -63
  301. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -79
  302. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -80
  303. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -78
  304. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +0 -16
  305. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +0 -31
  306. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -31
  307. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -270
  308. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -305
  309. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -35
  310. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +0 -38
  311. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +0 -13
  312. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
  313. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -63
  314. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -90
  315. data/bridge/sdk-core/rustfmt.toml +0 -1
  316. data/bridge/sdk-core/sdk/Cargo.toml +0 -48
  317. data/bridge/sdk-core/sdk/LICENSE.txt +0 -23
  318. data/bridge/sdk-core/sdk/src/activity_context.rs +0 -230
  319. data/bridge/sdk-core/sdk/src/app_data.rs +0 -37
  320. data/bridge/sdk-core/sdk/src/interceptors.rs +0 -50
  321. data/bridge/sdk-core/sdk/src/lib.rs +0 -861
  322. data/bridge/sdk-core/sdk/src/payload_converter.rs +0 -11
  323. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +0 -295
  324. data/bridge/sdk-core/sdk/src/workflow_context.rs +0 -694
  325. data/bridge/sdk-core/sdk/src/workflow_future.rs +0 -500
  326. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +0 -33
  327. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +0 -23
  328. data/bridge/sdk-core/sdk-core-protos/build.rs +0 -142
  329. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +0 -7
  330. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +0 -557
  331. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +0 -234
  332. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +0 -2088
  333. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +0 -48
  334. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +0 -14
  335. data/bridge/sdk-core/test-utils/Cargo.toml +0 -38
  336. data/bridge/sdk-core/test-utils/src/canned_histories.rs +0 -1389
  337. data/bridge/sdk-core/test-utils/src/histfetch.rs +0 -28
  338. data/bridge/sdk-core/test-utils/src/lib.rs +0 -709
  339. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +0 -50
  340. data/bridge/sdk-core/test-utils/src/workflows.rs +0 -29
  341. data/bridge/sdk-core/tests/fuzzy_workflow.rs +0 -130
  342. data/bridge/sdk-core/tests/heavy_tests.rs +0 -265
  343. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +0 -36
  344. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +0 -150
  345. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +0 -223
  346. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +0 -239
  347. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -90
  348. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +0 -314
  349. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +0 -151
  350. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +0 -902
  351. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
  352. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -60
  353. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -51
  354. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -51
  355. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -64
  356. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -47
  357. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -669
  358. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -54
  359. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -92
  360. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +0 -228
  361. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +0 -94
  362. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -171
  363. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +0 -85
  364. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -120
  365. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +0 -77
  366. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +0 -596
  367. data/bridge/sdk-core/tests/main.rs +0 -103
  368. data/bridge/sdk-core/tests/runner.rs +0 -132
  369. data/bridge/sdk-core/tests/wf_input_replay.rs +0 -32
  370. data/bridge/src/connection.rs +0 -202
  371. data/bridge/src/lib.rs +0 -494
  372. data/bridge/src/runtime.rs +0 -54
  373. data/bridge/src/test_server.rs +0 -153
  374. data/bridge/src/worker.rs +0 -197
  375. data/ext/Rakefile +0 -9
  376. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +0 -14
  377. data/lib/gen/temporal/api/batch/v1/message_pb.rb +0 -50
  378. data/lib/gen/temporal/api/command/v1/message_pb.rb +0 -160
  379. data/lib/gen/temporal/api/common/v1/message_pb.rb +0 -73
  380. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +0 -33
  381. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +0 -37
  382. data/lib/gen/temporal/api/enums/v1/common_pb.rb +0 -42
  383. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +0 -68
  384. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +0 -79
  385. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +0 -37
  386. data/lib/gen/temporal/api/enums/v1/query_pb.rb +0 -31
  387. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +0 -24
  388. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +0 -28
  389. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +0 -30
  390. data/lib/gen/temporal/api/enums/v1/update_pb.rb +0 -25
  391. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +0 -89
  392. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +0 -84
  393. data/lib/gen/temporal/api/failure/v1/message_pb.rb +0 -83
  394. data/lib/gen/temporal/api/filter/v1/message_pb.rb +0 -40
  395. data/lib/gen/temporal/api/history/v1/message_pb.rb +0 -498
  396. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +0 -64
  397. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +0 -88
  398. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +0 -20
  399. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +0 -30
  400. data/lib/gen/temporal/api/query/v1/message_pb.rb +0 -38
  401. data/lib/gen/temporal/api/replication/v1/message_pb.rb +0 -37
  402. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +0 -149
  403. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +0 -23
  404. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +0 -73
  405. data/lib/gen/temporal/api/testservice/v1/request_response_pb.rb +0 -49
  406. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +0 -21
  407. data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -72
  408. data/lib/gen/temporal/api/version/v1/message_pb.rb +0 -41
  409. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +0 -111
  410. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +0 -798
  411. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +0 -20
  412. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +0 -62
  413. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +0 -61
  414. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +0 -61
  415. data/lib/gen/temporal/sdk/core/common/common_pb.rb +0 -26
  416. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +0 -40
  417. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +0 -31
  418. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +0 -171
  419. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +0 -200
  420. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +0 -41
  421. data/lib/temporalio/bridge/connect_options.rb +0 -15
  422. data/lib/temporalio/bridge/error.rb +0 -8
  423. data/lib/temporalio/bridge/retry_config.rb +0 -24
  424. data/lib/temporalio/bridge/tls_options.rb +0 -19
  425. data/lib/temporalio/bridge.rb +0 -14
  426. data/lib/temporalio/client/implementation.rb +0 -340
  427. data/lib/temporalio/connection/retry_config.rb +0 -44
  428. data/lib/temporalio/connection/service.rb +0 -20
  429. data/lib/temporalio/connection/test_service.rb +0 -92
  430. data/lib/temporalio/connection/tls_options.rb +0 -51
  431. data/lib/temporalio/connection/workflow_service.rb +0 -731
  432. data/lib/temporalio/connection.rb +0 -86
  433. data/lib/temporalio/data_converter.rb +0 -191
  434. data/lib/temporalio/error/workflow_failure.rb +0 -19
  435. data/lib/temporalio/errors.rb +0 -40
  436. data/lib/temporalio/failure_converter/base.rb +0 -26
  437. data/lib/temporalio/failure_converter/basic.rb +0 -319
  438. data/lib/temporalio/failure_converter.rb +0 -7
  439. data/lib/temporalio/interceptor/activity_inbound.rb +0 -22
  440. data/lib/temporalio/interceptor/activity_outbound.rb +0 -24
  441. data/lib/temporalio/interceptor/chain.rb +0 -28
  442. data/lib/temporalio/interceptor/client.rb +0 -127
  443. data/lib/temporalio/interceptor.rb +0 -22
  444. data/lib/temporalio/payload_codec/base.rb +0 -32
  445. data/lib/temporalio/payload_converter/base.rb +0 -24
  446. data/lib/temporalio/payload_converter/bytes.rb +0 -27
  447. data/lib/temporalio/payload_converter/composite.rb +0 -49
  448. data/lib/temporalio/payload_converter/encoding_base.rb +0 -35
  449. data/lib/temporalio/payload_converter/json.rb +0 -26
  450. data/lib/temporalio/payload_converter/nil.rb +0 -26
  451. data/lib/temporalio/payload_converter.rb +0 -14
  452. data/lib/temporalio/retry_state.rb +0 -35
  453. data/lib/temporalio/testing/time_skipping_handle.rb +0 -32
  454. data/lib/temporalio/testing/time_skipping_interceptor.rb +0 -23
  455. data/lib/temporalio/timeout_type.rb +0 -29
  456. data/lib/temporalio/worker/activity_runner.rb +0 -114
  457. data/lib/temporalio/worker/activity_worker.rb +0 -164
  458. data/lib/temporalio/worker/reactor.rb +0 -46
  459. data/lib/temporalio/worker/runner.rb +0 -63
  460. data/lib/temporalio/worker/sync_worker.rb +0 -124
  461. data/lib/temporalio/worker/thread_pool_executor.rb +0 -51
  462. data/lib/temporalio/workflow/async.rb +0 -46
  463. data/lib/temporalio/workflow/execution_info.rb +0 -54
  464. data/lib/temporalio/workflow/execution_status.rb +0 -36
  465. data/lib/temporalio/workflow/future.rb +0 -138
  466. data/lib/temporalio/workflow/id_reuse_policy.rb +0 -36
  467. data/lib/temporalio/workflow/info.rb +0 -76
  468. data/lib/temporalio/workflow/query_reject_condition.rb +0 -33
  469. data/lib/thermite_patch.rb +0 -33
  470. data/sig/async.rbs +0 -17
  471. data/sig/protobuf.rbs +0 -16
  472. data/sig/protos/dependencies/gogoproto/gogo.rbs +0 -914
  473. data/sig/protos/google/protobuf/any.rbs +0 -157
  474. data/sig/protos/google/protobuf/descriptor.rbs +0 -2825
  475. data/sig/protos/google/protobuf/duration.rbs +0 -114
  476. data/sig/protos/google/protobuf/empty.rbs +0 -36
  477. data/sig/protos/google/protobuf/timestamp.rbs +0 -145
  478. data/sig/protos/google/protobuf/wrappers.rbs +0 -358
  479. data/sig/protos/temporal/api/batch/v1/message.rbs +0 -300
  480. data/sig/protos/temporal/api/command/v1/message.rbs +0 -1399
  481. data/sig/protos/temporal/api/common/v1/message.rbs +0 -528
  482. data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +0 -79
  483. data/sig/protos/temporal/api/enums/v1/command_type.rbs +0 -68
  484. data/sig/protos/temporal/api/enums/v1/common.rbs +0 -118
  485. data/sig/protos/temporal/api/enums/v1/event_type.rbs +0 -264
  486. data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +0 -277
  487. data/sig/protos/temporal/api/enums/v1/namespace.rbs +0 -108
  488. data/sig/protos/temporal/api/enums/v1/query.rbs +0 -81
  489. data/sig/protos/temporal/api/enums/v1/reset.rbs +0 -44
  490. data/sig/protos/temporal/api/enums/v1/schedule.rbs +0 -72
  491. data/sig/protos/temporal/api/enums/v1/task_queue.rbs +0 -92
  492. data/sig/protos/temporal/api/enums/v1/update.rbs +0 -64
  493. data/sig/protos/temporal/api/enums/v1/workflow.rbs +0 -371
  494. data/sig/protos/temporal/api/errordetails/v1/message.rbs +0 -551
  495. data/sig/protos/temporal/api/failure/v1/message.rbs +0 -581
  496. data/sig/protos/temporal/api/filter/v1/message.rbs +0 -171
  497. data/sig/protos/temporal/api/history/v1/message.rbs +0 -4609
  498. data/sig/protos/temporal/api/namespace/v1/message.rbs +0 -410
  499. data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +0 -643
  500. data/sig/protos/temporal/api/operatorservice/v1/service.rbs +0 -17
  501. data/sig/protos/temporal/api/protocol/v1/message.rbs +0 -84
  502. data/sig/protos/temporal/api/query/v1/message.rbs +0 -182
  503. data/sig/protos/temporal/api/replication/v1/message.rbs +0 -148
  504. data/sig/protos/temporal/api/schedule/v1/message.rbs +0 -1488
  505. data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +0 -110
  506. data/sig/protos/temporal/api/taskqueue/v1/message.rbs +0 -486
  507. data/sig/protos/temporal/api/testservice/v1/request_response.rbs +0 -249
  508. data/sig/protos/temporal/api/testservice/v1/service.rbs +0 -15
  509. data/sig/protos/temporal/api/update/v1/message.rbs +0 -489
  510. data/sig/protos/temporal/api/version/v1/message.rbs +0 -184
  511. data/sig/protos/temporal/api/workflow/v1/message.rbs +0 -824
  512. data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +0 -7250
  513. data/sig/protos/temporal/api/workflowservice/v1/service.rbs +0 -22
  514. data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +0 -380
  515. data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +0 -386
  516. data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +0 -323
  517. data/sig/protos/temporal/sdk/core/common/common.rbs +0 -62
  518. data/sig/protos/temporal/sdk/core/core_interface.rbs +0 -101
  519. data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +0 -119
  520. data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +0 -1473
  521. data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +0 -1784
  522. data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +0 -180
  523. data/sig/ruby.rbs +0 -12
  524. data/sig/temporalio/activity/context.rbs +0 -29
  525. data/sig/temporalio/activity/info.rbs +0 -43
  526. data/sig/temporalio/activity.rbs +0 -19
  527. data/sig/temporalio/bridge/connect_options.rbs +0 -19
  528. data/sig/temporalio/bridge/error.rbs +0 -8
  529. data/sig/temporalio/bridge/retry_config.rbs +0 -21
  530. data/sig/temporalio/bridge/tls_options.rbs +0 -17
  531. data/sig/temporalio/bridge.rbs +0 -71
  532. data/sig/temporalio/client/implementation.rbs +0 -38
  533. data/sig/temporalio/client/workflow_handle.rbs +0 -41
  534. data/sig/temporalio/client.rbs +0 -35
  535. data/sig/temporalio/connection/retry_config.rbs +0 -37
  536. data/sig/temporalio/connection/service.rbs +0 -14
  537. data/sig/temporalio/connection/test_service.rbs +0 -13
  538. data/sig/temporalio/connection/tls_options.rbs +0 -43
  539. data/sig/temporalio/connection/workflow_service.rbs +0 -48
  540. data/sig/temporalio/connection.rbs +0 -30
  541. data/sig/temporalio/data_converter.rbs +0 -35
  542. data/sig/temporalio/error/failure.rbs +0 -121
  543. data/sig/temporalio/error/workflow_failure.rbs +0 -9
  544. data/sig/temporalio/errors.rbs +0 -36
  545. data/sig/temporalio/failure_converter/base.rbs +0 -12
  546. data/sig/temporalio/failure_converter/basic.rbs +0 -86
  547. data/sig/temporalio/failure_converter.rbs +0 -5
  548. data/sig/temporalio/interceptor/activity_inbound.rbs +0 -21
  549. data/sig/temporalio/interceptor/activity_outbound.rbs +0 -10
  550. data/sig/temporalio/interceptor/chain.rbs +0 -24
  551. data/sig/temporalio/interceptor/client.rbs +0 -148
  552. data/sig/temporalio/interceptor.rbs +0 -6
  553. data/sig/temporalio/payload_codec/base.rbs +0 -12
  554. data/sig/temporalio/payload_converter/base.rbs +0 -12
  555. data/sig/temporalio/payload_converter/bytes.rbs +0 -9
  556. data/sig/temporalio/payload_converter/composite.rbs +0 -19
  557. data/sig/temporalio/payload_converter/encoding_base.rbs +0 -14
  558. data/sig/temporalio/payload_converter/json.rbs +0 -9
  559. data/sig/temporalio/payload_converter/nil.rbs +0 -9
  560. data/sig/temporalio/payload_converter.rbs +0 -5
  561. data/sig/temporalio/retry_policy.rbs +0 -25
  562. data/sig/temporalio/retry_state.rbs +0 -20
  563. data/sig/temporalio/runtime.rbs +0 -12
  564. data/sig/temporalio/testing/time_skipping_handle.rbs +0 -15
  565. data/sig/temporalio/testing/time_skipping_interceptor.rbs +0 -13
  566. data/sig/temporalio/testing/workflow_environment.rbs +0 -22
  567. data/sig/temporalio/testing.rbs +0 -35
  568. data/sig/temporalio/timeout_type.rbs +0 -15
  569. data/sig/temporalio/version.rbs +0 -3
  570. data/sig/temporalio/worker/activity_runner.rbs +0 -35
  571. data/sig/temporalio/worker/activity_worker.rbs +0 -44
  572. data/sig/temporalio/worker/reactor.rbs +0 -22
  573. data/sig/temporalio/worker/runner.rbs +0 -21
  574. data/sig/temporalio/worker/sync_worker.rbs +0 -23
  575. data/sig/temporalio/worker/thread_pool_executor.rbs +0 -23
  576. data/sig/temporalio/worker.rbs +0 -46
  577. data/sig/temporalio/workflow/async.rbs +0 -9
  578. data/sig/temporalio/workflow/execution_info.rbs +0 -55
  579. data/sig/temporalio/workflow/execution_status.rbs +0 -21
  580. data/sig/temporalio/workflow/future.rbs +0 -40
  581. data/sig/temporalio/workflow/id_reuse_policy.rbs +0 -15
  582. data/sig/temporalio/workflow/info.rbs +0 -55
  583. data/sig/temporalio/workflow/query_reject_condition.rbs +0 -14
  584. data/sig/temporalio.rbs +0 -2
  585. data/sig/thermite_patch.rbs +0 -15
@@ -1,428 +0,0 @@
1
- use crate::{
2
- worker::{LocalActivityExecutionResult, LEGACY_QUERY_ID},
3
- CompleteActivityError, TaskToken,
4
- };
5
- use anyhow::anyhow;
6
- use std::{
7
- collections::HashMap,
8
- convert::TryFrom,
9
- fmt::{Debug, Display, Formatter},
10
- time::{Duration, SystemTime},
11
- };
12
- use temporal_sdk_core_protos::{
13
- constants::{LOCAL_ACTIVITY_MARKER_NAME, PATCH_MARKER_NAME},
14
- coresdk::{
15
- activity_result::{activity_execution_result, activity_execution_result::Status},
16
- common::{
17
- decode_change_marker_details, extract_local_activity_marker_data,
18
- extract_local_activity_marker_details,
19
- },
20
- external_data::LocalActivityMarkerData,
21
- workflow_activation::{
22
- query_to_job, workflow_activation_job, QueryWorkflow, WorkflowActivation,
23
- WorkflowActivationJob,
24
- },
25
- workflow_commands::{
26
- query_result, ActivityCancellationType, QueryResult, ScheduleLocalActivity,
27
- },
28
- workflow_completion,
29
- },
30
- temporal::api::{
31
- common::v1::{Payload, RetryPolicy, WorkflowExecution},
32
- enums::v1::EventType,
33
- failure::v1::Failure,
34
- history::v1::{history_event, History, HistoryEvent, MarkerRecordedEventAttributes},
35
- query::v1::WorkflowQuery,
36
- workflowservice::v1::PollWorkflowTaskQueueResponse,
37
- },
38
- utilities::TryIntoOrNone,
39
- };
40
-
41
- /// A validated version of a [PollWorkflowTaskQueueResponse]
42
- #[derive(Clone, PartialEq)]
43
- #[allow(clippy::manual_non_exhaustive)] // Clippy doesn't understand it's only for *in* this crate
44
- pub struct ValidPollWFTQResponse {
45
- pub task_token: TaskToken,
46
- pub task_queue: String,
47
- pub workflow_execution: WorkflowExecution,
48
- pub workflow_type: String,
49
- pub history: History,
50
- pub next_page_token: Vec<u8>,
51
- pub attempt: u32,
52
- pub previous_started_event_id: i64,
53
- pub started_event_id: i64,
54
- /// If this is present, `history` will be empty. This is not a very "tight" design, but it's
55
- /// enforced at construction time. From the `query` field.
56
- pub legacy_query: Option<WorkflowQuery>,
57
- /// Query requests from the `queries` field
58
- pub query_requests: Vec<QueryWorkflow>,
59
-
60
- /// Zero-size field to prevent explicit construction
61
- _cant_construct_me: (),
62
- }
63
-
64
- impl Debug for ValidPollWFTQResponse {
65
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
66
- write!(
67
- f,
68
- "ValidWFT {{ task_token: {}, task_queue: {}, workflow_execution: {:?}, \
69
- workflow_type: {}, attempt: {}, previous_started_event_id: {}, started_event_id {}, \
70
- history_length: {}, first_evt_in_hist_id: {:?}, legacy_query: {:?}, queries: {:?} }}",
71
- self.task_token,
72
- self.task_queue,
73
- self.workflow_execution,
74
- self.workflow_type,
75
- self.attempt,
76
- self.previous_started_event_id,
77
- self.started_event_id,
78
- self.history.events.len(),
79
- self.history.events.get(0).map(|e| e.event_id),
80
- self.legacy_query,
81
- self.query_requests
82
- )
83
- }
84
- }
85
-
86
- impl TryFrom<PollWorkflowTaskQueueResponse> for ValidPollWFTQResponse {
87
- /// We return the poll response itself if it was invalid
88
- type Error = PollWorkflowTaskQueueResponse;
89
-
90
- fn try_from(value: PollWorkflowTaskQueueResponse) -> Result<Self, Self::Error> {
91
- match value {
92
- PollWorkflowTaskQueueResponse {
93
- task_token,
94
- workflow_execution_task_queue: Some(tq),
95
- workflow_execution: Some(workflow_execution),
96
- workflow_type: Some(workflow_type),
97
- history: Some(history),
98
- next_page_token,
99
- attempt,
100
- previous_started_event_id,
101
- started_event_id,
102
- query,
103
- queries,
104
- ..
105
- } => {
106
- let query_requests = queries
107
- .into_iter()
108
- .map(|(id, q)| query_to_job(id, q))
109
- .collect();
110
-
111
- Ok(Self {
112
- task_token: TaskToken(task_token),
113
- task_queue: tq.name,
114
- workflow_execution,
115
- workflow_type: workflow_type.name,
116
- history,
117
- next_page_token,
118
- attempt: attempt as u32,
119
- previous_started_event_id,
120
- started_event_id,
121
- legacy_query: query,
122
- query_requests,
123
- _cant_construct_me: (),
124
- })
125
- }
126
- _ => Err(value),
127
- }
128
- }
129
- }
130
-
131
- pub(crate) trait WorkflowActivationExt {
132
- /// Returns true if this activation has one and only one job to perform a legacy query
133
- fn is_legacy_query(&self) -> bool;
134
- }
135
-
136
- impl WorkflowActivationExt for WorkflowActivation {
137
- fn is_legacy_query(&self) -> bool {
138
- matches!(&self.jobs.as_slice(), &[WorkflowActivationJob {
139
- variant: Some(workflow_activation_job::Variant::QueryWorkflow(qr))
140
- }] if qr.query_id == LEGACY_QUERY_ID)
141
- }
142
- }
143
-
144
- /// Create a legacy query failure result
145
- pub(crate) fn legacy_query_failure(fail: workflow_completion::Failure) -> QueryResult {
146
- QueryResult {
147
- query_id: LEGACY_QUERY_ID.to_string(),
148
- variant: Some(query_result::Variant::Failed(
149
- fail.failure.unwrap_or_default(),
150
- )),
151
- }
152
- }
153
-
154
- pub(crate) trait HistoryEventExt {
155
- /// If this history event represents a `patched` marker, return the info about
156
- /// it. Returns `None` if it is any other kind of event or marker.
157
- fn get_patch_marker_details(&self) -> Option<(String, bool)>;
158
- /// If this history event represents a local activity marker, return true.
159
- fn is_local_activity_marker(&self) -> bool;
160
- /// If this history event represents a local activity marker, return the marker id info.
161
- /// Returns `None` if it is any other kind of event or marker or the data is invalid.
162
- fn extract_local_activity_marker_data(&self) -> Option<LocalActivityMarkerData>;
163
- /// If this history event represents a local activity marker, return all the contained data.
164
- /// Returns `None` if it is any other kind of event or marker or the data is invalid.
165
- fn into_local_activity_marker_details(self) -> Option<CompleteLocalActivityData>;
166
- }
167
-
168
- impl HistoryEventExt for HistoryEvent {
169
- fn get_patch_marker_details(&self) -> Option<(String, bool)> {
170
- if self.event_type() == EventType::MarkerRecorded {
171
- match &self.attributes {
172
- Some(history_event::Attributes::MarkerRecordedEventAttributes(
173
- MarkerRecordedEventAttributes {
174
- marker_name,
175
- details,
176
- ..
177
- },
178
- )) if marker_name == PATCH_MARKER_NAME => decode_change_marker_details(details),
179
- _ => None,
180
- }
181
- } else {
182
- None
183
- }
184
- }
185
-
186
- fn is_local_activity_marker(&self) -> bool {
187
- if self.event_type() == EventType::MarkerRecorded {
188
- return matches!(&self.attributes,
189
- Some(history_event::Attributes::MarkerRecordedEventAttributes(
190
- MarkerRecordedEventAttributes { marker_name, .. },
191
- )) if marker_name == LOCAL_ACTIVITY_MARKER_NAME
192
- );
193
- }
194
- false
195
- }
196
-
197
- fn extract_local_activity_marker_data(&self) -> Option<LocalActivityMarkerData> {
198
- if self.event_type() == EventType::MarkerRecorded {
199
- match &self.attributes {
200
- Some(history_event::Attributes::MarkerRecordedEventAttributes(
201
- MarkerRecordedEventAttributes {
202
- marker_name,
203
- details,
204
- ..
205
- },
206
- )) if marker_name == LOCAL_ACTIVITY_MARKER_NAME => {
207
- extract_local_activity_marker_data(details)
208
- }
209
- _ => None,
210
- }
211
- } else {
212
- None
213
- }
214
- }
215
-
216
- fn into_local_activity_marker_details(self) -> Option<CompleteLocalActivityData> {
217
- if self.event_type() == EventType::MarkerRecorded {
218
- match self.attributes {
219
- Some(history_event::Attributes::MarkerRecordedEventAttributes(
220
- MarkerRecordedEventAttributes {
221
- marker_name,
222
- mut details,
223
- failure,
224
- ..
225
- },
226
- )) if marker_name == LOCAL_ACTIVITY_MARKER_NAME => {
227
- let (data, ok_res) = extract_local_activity_marker_details(&mut details);
228
- let data = data?;
229
- let result = match (ok_res, failure) {
230
- (Some(r), None) => Ok(r),
231
- (None | Some(_), Some(f)) => Err(f),
232
- (None, None) => Ok(Default::default()),
233
- };
234
- Some(CompleteLocalActivityData {
235
- marker_dat: data,
236
- result,
237
- })
238
- }
239
- _ => None,
240
- }
241
- } else {
242
- None
243
- }
244
- }
245
- }
246
-
247
- pub(crate) struct CompleteLocalActivityData {
248
- pub marker_dat: LocalActivityMarkerData,
249
- pub result: Result<Payload, Failure>,
250
- }
251
-
252
- pub(crate) fn validate_activity_completion(
253
- status: &activity_execution_result::Status,
254
- ) -> Result<(), CompleteActivityError> {
255
- match status {
256
- Status::Completed(c) if c.result.is_none() => {
257
- Err(CompleteActivityError::MalformedActivityCompletion {
258
- reason: "Activity completions must contain a `result` payload \
259
- (which may be empty)"
260
- .to_string(),
261
- completion: None,
262
- })
263
- }
264
- _ => Ok(()),
265
- }
266
- }
267
-
268
- impl TryFrom<activity_execution_result::Status> for LocalActivityExecutionResult {
269
- type Error = CompleteActivityError;
270
-
271
- fn try_from(s: activity_execution_result::Status) -> Result<Self, Self::Error> {
272
- match s {
273
- Status::Completed(c) => Ok(LocalActivityExecutionResult::Completed(c)),
274
- Status::Failed(f)
275
- if f.failure
276
- .as_ref()
277
- .map(|fail| fail.is_timeout().is_some())
278
- .unwrap_or_default() =>
279
- {
280
- Ok(LocalActivityExecutionResult::TimedOut(f))
281
- }
282
- Status::Failed(f) => Ok(LocalActivityExecutionResult::Failed(f)),
283
- Status::Cancelled(cancel) => Ok(LocalActivityExecutionResult::Cancelled(cancel)),
284
- Status::WillCompleteAsync(_) => {
285
- Err(CompleteActivityError::MalformedActivityCompletion {
286
- reason: "Local activities cannot be completed async".to_string(),
287
- completion: None,
288
- })
289
- }
290
- }
291
- }
292
- }
293
-
294
- /// Validated version of [ScheduleLocalActivity]. See it for field docs.
295
- /// One or both of `schedule_to_close_timeout` and `start_to_close_timeout` are guaranteed to exist.
296
- #[derive(Debug, Clone)]
297
- #[cfg_attr(test, derive(Default))]
298
- pub struct ValidScheduleLA {
299
- pub seq: u32,
300
- pub activity_id: String,
301
- pub activity_type: String,
302
- pub attempt: u32,
303
- pub original_schedule_time: Option<SystemTime>,
304
- pub headers: HashMap<String, Payload>,
305
- pub arguments: Vec<Payload>,
306
- pub schedule_to_start_timeout: Option<Duration>,
307
- pub close_timeouts: LACloseTimeouts,
308
- pub retry_policy: RetryPolicy,
309
- pub local_retry_threshold: Duration,
310
- pub cancellation_type: ActivityCancellationType,
311
- }
312
-
313
- #[derive(Debug, Clone, Copy)]
314
- pub enum LACloseTimeouts {
315
- ScheduleOnly(Duration),
316
- StartOnly(Duration),
317
- Both { sched: Duration, start: Duration },
318
- }
319
-
320
- impl LACloseTimeouts {
321
- /// Splits into (schedule_to_close, start_to_close) options, one or both of which is guaranteed
322
- /// to be populated
323
- pub fn into_sched_and_start(self) -> (Option<Duration>, Option<Duration>) {
324
- match self {
325
- LACloseTimeouts::ScheduleOnly(x) => (Some(x), None),
326
- LACloseTimeouts::StartOnly(x) => (None, Some(x)),
327
- LACloseTimeouts::Both { sched, start } => (Some(sched), Some(start)),
328
- }
329
- }
330
- }
331
-
332
- #[cfg(test)]
333
- impl Default for LACloseTimeouts {
334
- fn default() -> Self {
335
- LACloseTimeouts::ScheduleOnly(Duration::from_secs(100))
336
- }
337
- }
338
-
339
- impl ValidScheduleLA {
340
- pub fn from_schedule_la(
341
- v: ScheduleLocalActivity,
342
- wf_exe_timeout: Option<Duration>,
343
- ) -> Result<Self, anyhow::Error> {
344
- let original_schedule_time = v
345
- .original_schedule_time
346
- .map(|x| {
347
- x.try_into()
348
- .map_err(|_| anyhow!("Could not convert original_schedule_time"))
349
- })
350
- .transpose()?;
351
- let sched_to_close = v
352
- .schedule_to_close_timeout
353
- .map(|x| {
354
- x.try_into()
355
- .map_err(|_| anyhow!("Could not convert schedule_to_close_timeout"))
356
- })
357
- .transpose()?
358
- // Default to execution timeout if unset
359
- .or(wf_exe_timeout);
360
- let mut schedule_to_start_timeout = v
361
- .schedule_to_start_timeout
362
- .map(|x| {
363
- x.try_into()
364
- .map_err(|_| anyhow!("Could not convert schedule_to_start_timeout"))
365
- })
366
- .transpose()?;
367
- // Clamp schedule-to-start if larger than schedule-to-close
368
- if let Some((sched_to_start, sched_to_close)) =
369
- schedule_to_start_timeout.as_mut().zip(sched_to_close)
370
- {
371
- if *sched_to_start > sched_to_close {
372
- *sched_to_start = sched_to_close;
373
- }
374
- }
375
- let close_timeouts = match (
376
- sched_to_close,
377
- v.start_to_close_timeout
378
- .map(|x| {
379
- x.try_into()
380
- .map_err(|_| anyhow!("Could not convert start_to_close_timeout"))
381
- })
382
- .transpose()?,
383
- ) {
384
- (Some(sch), None) => LACloseTimeouts::ScheduleOnly(sch),
385
- (None, Some(start)) => LACloseTimeouts::StartOnly(start),
386
- (Some(sched), Some(mut start)) => {
387
- // Clamp start-to-close if larger than schedule-to-close
388
- if start > sched {
389
- start = sched;
390
- }
391
- LACloseTimeouts::Both { sched, start }
392
- }
393
- (None, None) => {
394
- return Err(anyhow!(
395
- "One of schedule_to_close or start_to_close timeouts must be set"
396
- ))
397
- }
398
- };
399
- let retry_policy = v.retry_policy.unwrap_or_default();
400
- let local_retry_threshold = v
401
- .local_retry_threshold
402
- .clone()
403
- .try_into_or_none()
404
- .unwrap_or_else(|| Duration::from_secs(60));
405
- let cancellation_type = ActivityCancellationType::from_i32(v.cancellation_type)
406
- .unwrap_or(ActivityCancellationType::WaitCancellationCompleted);
407
- Ok(ValidScheduleLA {
408
- seq: v.seq,
409
- activity_id: v.activity_id,
410
- activity_type: v.activity_type,
411
- attempt: v.attempt,
412
- original_schedule_time,
413
- headers: v.headers,
414
- arguments: v.arguments,
415
- schedule_to_start_timeout,
416
- close_timeouts,
417
- retry_policy,
418
- local_retry_threshold,
419
- cancellation_type,
420
- })
421
- }
422
- }
423
-
424
- impl Display for ValidScheduleLA {
425
- fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
426
- write!(f, "ValidScheduleLA({}, {})", self.seq, self.activity_type)
427
- }
428
- }
@@ -1,215 +0,0 @@
1
- //! This module implements support for creating special core instances and workers which can be used
2
- //! to replay canned histories. It should be used by Lang SDKs to provide replay capabilities to
3
- //! users during testing.
4
-
5
- use crate::{
6
- worker::client::{mocks::mock_manual_workflow_client, WorkerClient},
7
- Worker,
8
- };
9
- use futures::{FutureExt, Stream, StreamExt};
10
- use once_cell::sync::OnceCell;
11
- use parking_lot::Mutex;
12
- use std::{
13
- collections::HashMap,
14
- pin::Pin,
15
- sync::Arc,
16
- task::{Context, Poll},
17
- };
18
- use temporal_sdk_core_protos::{
19
- coresdk::workflow_activation::remove_from_cache::EvictionReason,
20
- temporal::api::{
21
- common::v1::WorkflowExecution,
22
- history::v1::History,
23
- workflowservice::v1::{
24
- RespondWorkflowTaskCompletedResponse, RespondWorkflowTaskFailedResponse,
25
- },
26
- },
27
- };
28
- pub use temporal_sdk_core_protos::{
29
- default_wes_attribs, HistoryInfo, TestHistoryBuilder, DEFAULT_WORKFLOW_TYPE,
30
- };
31
- use tokio::sync::{mpsc, mpsc::UnboundedSender, Mutex as TokioMutex};
32
- use tokio_stream::wrappers::UnboundedReceiverStream;
33
- use tokio_util::sync::CancellationToken;
34
-
35
- /// A history which will be used during replay verification. Since histories do not include the
36
- /// workflow id, it must be manually attached.
37
- #[derive(Debug, Clone, derive_more::Constructor)]
38
- pub struct HistoryForReplay {
39
- hist: History,
40
- workflow_id: String,
41
- }
42
-
43
- /// Allows lang to feed histories into the replayer one at a time. Simply drop the feeder to signal
44
- /// to the worker that you're done and it should initiate shutdown.
45
- pub struct HistoryFeeder {
46
- tx: mpsc::Sender<HistoryForReplay>,
47
- }
48
- /// The stream half of a [HistoryFeeder]
49
- pub struct HistoryFeederStream {
50
- rcvr: mpsc::Receiver<HistoryForReplay>,
51
- }
52
-
53
- impl HistoryFeeder {
54
- /// Make a new history feeder, which will store at most `buffer_size` histories before `feed`
55
- /// blocks.
56
- ///
57
- /// Returns a feeder which will be used to feed in histories, and a stream you can pass to
58
- /// one of the replay worker init functions.
59
- pub fn new(buffer_size: usize) -> (Self, HistoryFeederStream) {
60
- let (tx, rcvr) = mpsc::channel(buffer_size);
61
- (Self { tx }, HistoryFeederStream { rcvr })
62
- }
63
- /// Feed a new history into the replayer, blocking if there is not room to accept another
64
- /// history.
65
- pub async fn feed(&self, history: HistoryForReplay) -> anyhow::Result<()> {
66
- self.tx.send(history).await?;
67
- Ok(())
68
- }
69
- }
70
-
71
- impl Stream for HistoryFeederStream {
72
- type Item = HistoryForReplay;
73
-
74
- fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
75
- self.rcvr.poll_recv(cx)
76
- }
77
- }
78
-
79
- /// Create a mock client which can be used by a replay worker to serve up canned histories. It will
80
- /// return the entire history in one workflow task. If a workflow task failure is sent to the mock,
81
- /// it will send the complete response again.
82
- ///
83
- /// Once it runs out of histories to return, it will serve up default responses after a 10s delay
84
- pub(crate) fn mock_client_from_histories(historator: Historator) -> impl WorkerClient {
85
- let mut mg = mock_manual_workflow_client();
86
-
87
- let hist_allow_tx = historator.replay_done_tx.clone();
88
- let historator = Arc::new(TokioMutex::new(historator));
89
-
90
- mg.expect_poll_workflow_task().returning(move |_, _| {
91
- let historator = historator.clone();
92
- async move {
93
- let mut hlock = historator.lock().await;
94
- // Always wait for permission before dispatching the next task
95
- let _ = hlock.allow_stream.next().await;
96
-
97
- if let Some(history) = hlock.next().await {
98
- let hist_info = HistoryInfo::new_from_history(&history.hist, None).unwrap();
99
- let mut resp = hist_info.as_poll_wft_response();
100
- resp.workflow_execution = Some(WorkflowExecution {
101
- workflow_id: history.workflow_id,
102
- run_id: hist_info.orig_run_id().to_string(),
103
- });
104
- Ok(resp)
105
- } else {
106
- if let Some(wc) = hlock.worker_closer.get() {
107
- wc.cancel();
108
- }
109
- Ok(Default::default())
110
- }
111
- }
112
- .boxed()
113
- });
114
-
115
- mg.expect_complete_workflow_task().returning(move |_| {
116
- async move { Ok(RespondWorkflowTaskCompletedResponse::default()) }.boxed()
117
- });
118
- mg.expect_fail_workflow_task().returning(move |_, _, _| {
119
- hist_allow_tx.send("Failed".to_string()).unwrap();
120
- async move { Ok(RespondWorkflowTaskFailedResponse::default()) }.boxed()
121
- });
122
-
123
- mg
124
- }
125
-
126
- pub(crate) struct Historator {
127
- iter: Pin<Box<dyn Stream<Item = HistoryForReplay> + Send>>,
128
- allow_stream: UnboundedReceiverStream<String>,
129
- worker_closer: Arc<OnceCell<CancellationToken>>,
130
- dat: Arc<Mutex<HistoratorDat>>,
131
- replay_done_tx: UnboundedSender<String>,
132
- }
133
- impl Historator {
134
- pub(crate) fn new(histories: impl Stream<Item = HistoryForReplay> + Send + 'static) -> Self {
135
- let dat = Arc::new(Mutex::new(HistoratorDat::default()));
136
- let (replay_done_tx, replay_done_rx) = mpsc::unbounded_channel();
137
- // Need to allow the first history item
138
- replay_done_tx.send("fake".to_string()).unwrap();
139
- Self {
140
- iter: Box::pin(histories.fuse()),
141
- allow_stream: UnboundedReceiverStream::new(replay_done_rx),
142
- worker_closer: Arc::new(OnceCell::new()),
143
- dat,
144
- replay_done_tx,
145
- }
146
- }
147
-
148
- /// Returns a callback that can be used as the post-activation hook for a worker to indicate
149
- /// we're ready to replay the next history, or whatever else.
150
- pub(crate) fn get_post_activate_hook(&self) -> impl Fn(&Worker, &str, usize) + Send + Sync {
151
- let dat = self.dat.clone();
152
- let done_tx = self.replay_done_tx.clone();
153
- move |worker, activated_run_id, last_processed_event| {
154
- // We can't hold the lock while evaluating the hook, or we'd deadlock.
155
- let last_event_in_hist = dat
156
- .lock()
157
- .run_id_to_last_event_num
158
- .get(activated_run_id)
159
- .cloned();
160
- if let Some(le) = last_event_in_hist {
161
- if last_processed_event >= le {
162
- worker.request_wf_eviction(
163
- activated_run_id,
164
- "Always evict workflows after replay",
165
- EvictionReason::LangRequested,
166
- );
167
- done_tx.send(activated_run_id.to_string()).unwrap();
168
- }
169
- }
170
- }
171
- }
172
-
173
- pub(crate) fn get_shutdown_setter(&self) -> impl FnOnce(CancellationToken) + 'static {
174
- let wc = self.worker_closer.clone();
175
- move |ct| {
176
- wc.set(ct).expect("Shutdown token must only be set once");
177
- }
178
- }
179
- }
180
-
181
- impl Stream for Historator {
182
- type Item = HistoryForReplay;
183
-
184
- fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
185
- match self.iter.poll_next_unpin(cx) {
186
- Poll::Ready(Some(history)) => {
187
- let run_id = history
188
- .hist
189
- .extract_run_id_from_start()
190
- .expect(
191
- "Histories provided for replay must contain run ids in their workflow \
192
- execution started events",
193
- )
194
- .to_string();
195
- let last_event = history.hist.last_event_id();
196
- self.dat
197
- .lock()
198
- .run_id_to_last_event_num
199
- .insert(run_id, last_event as usize);
200
- Poll::Ready(Some(history))
201
- }
202
- Poll::Ready(None) => {
203
- self.dat.lock().all_dispatched = true;
204
- Poll::Ready(None)
205
- }
206
- o => o,
207
- }
208
- }
209
- }
210
-
211
- #[derive(Default)]
212
- struct HistoratorDat {
213
- run_id_to_last_event_num: HashMap<String, usize>,
214
- all_dispatched: bool,
215
- }