temporalio 0.1.1 → 0.3.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 (628) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -0
  3. data/Cargo.lock +4324 -0
  4. data/Cargo.toml +25 -0
  5. data/Gemfile +20 -0
  6. data/LICENSE +16 -15
  7. data/README.md +985 -183
  8. data/Rakefile +101 -0
  9. data/ext/Cargo.toml +26 -0
  10. data/lib/temporalio/activity/complete_async_error.rb +11 -0
  11. data/lib/temporalio/activity/context.rb +86 -78
  12. data/lib/temporalio/activity/definition.rb +175 -0
  13. data/lib/temporalio/activity/info.rb +44 -47
  14. data/lib/temporalio/activity.rb +8 -81
  15. data/lib/temporalio/api/activity/v1/message.rb +25 -0
  16. data/lib/temporalio/api/batch/v1/message.rb +31 -0
  17. data/lib/temporalio/api/cloud/account/v1/message.rb +28 -0
  18. data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +126 -0
  19. data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
  20. data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
  21. data/lib/temporalio/api/cloud/identity/v1/message.rb +41 -0
  22. data/lib/temporalio/api/cloud/namespace/v1/message.rb +42 -0
  23. data/lib/temporalio/api/cloud/nexus/v1/message.rb +31 -0
  24. data/lib/temporalio/api/cloud/operation/v1/message.rb +28 -0
  25. data/lib/temporalio/api/cloud/region/v1/message.rb +24 -0
  26. data/lib/temporalio/api/cloud/resource/v1/message.rb +23 -0
  27. data/lib/temporalio/api/cloud/sink/v1/message.rb +24 -0
  28. data/lib/temporalio/api/cloud/usage/v1/message.rb +31 -0
  29. data/lib/temporalio/api/command/v1/message.rb +46 -0
  30. data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
  31. data/lib/temporalio/api/common/v1/message.rb +47 -0
  32. data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
  33. data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
  34. data/lib/temporalio/api/enums/v1/common.rb +26 -0
  35. data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
  36. data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
  37. data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
  38. data/lib/temporalio/api/enums/v1/query.rb +22 -0
  39. data/lib/temporalio/api/enums/v1/reset.rb +23 -0
  40. data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
  41. data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
  42. data/lib/temporalio/api/enums/v1/update.rb +22 -0
  43. data/lib/temporalio/api/enums/v1/workflow.rb +30 -0
  44. data/lib/temporalio/api/errordetails/v1/message.rb +42 -0
  45. data/lib/temporalio/api/export/v1/message.rb +24 -0
  46. data/lib/temporalio/api/failure/v1/message.rb +35 -0
  47. data/lib/temporalio/api/filter/v1/message.rb +27 -0
  48. data/lib/temporalio/api/history/v1/message.rb +90 -0
  49. data/lib/temporalio/api/namespace/v1/message.rb +31 -0
  50. data/lib/temporalio/api/nexus/v1/message.rb +40 -0
  51. data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
  52. data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
  53. data/lib/temporalio/api/operatorservice.rb +3 -0
  54. data/lib/temporalio/api/payload_visitor.rb +1513 -0
  55. data/lib/temporalio/api/protocol/v1/message.rb +23 -0
  56. data/lib/temporalio/api/query/v1/message.rb +27 -0
  57. data/lib/temporalio/api/replication/v1/message.rb +26 -0
  58. data/lib/temporalio/api/schedule/v1/message.rb +43 -0
  59. data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
  60. data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
  61. data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
  62. data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
  63. data/lib/temporalio/api/taskqueue/v1/message.rb +45 -0
  64. data/lib/{gen/temporal/api/testservice/v1/request_response_pb.rb → temporalio/api/testservice/v1/request_response.rb} +6 -24
  65. data/lib/temporalio/api/testservice/v1/service.rb +23 -0
  66. data/lib/temporalio/api/update/v1/message.rb +33 -0
  67. data/lib/temporalio/api/version/v1/message.rb +26 -0
  68. data/lib/temporalio/api/workflow/v1/message.rb +43 -0
  69. data/lib/temporalio/api/workflowservice/v1/request_response.rb +204 -0
  70. data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
  71. data/lib/temporalio/api/workflowservice.rb +3 -0
  72. data/lib/temporalio/api.rb +14 -0
  73. data/lib/temporalio/cancellation.rb +170 -0
  74. data/lib/temporalio/client/activity_id_reference.rb +32 -0
  75. data/lib/temporalio/client/async_activity_handle.rb +85 -0
  76. data/lib/temporalio/client/connection/cloud_service.rb +726 -0
  77. data/lib/temporalio/client/connection/operator_service.rb +201 -0
  78. data/lib/temporalio/client/connection/service.rb +42 -0
  79. data/lib/temporalio/client/connection/test_service.rb +111 -0
  80. data/lib/temporalio/client/connection/workflow_service.rb +1041 -0
  81. data/lib/temporalio/client/connection.rb +316 -0
  82. data/lib/temporalio/client/interceptor.rb +416 -0
  83. data/lib/temporalio/client/schedule.rb +967 -0
  84. data/lib/temporalio/client/schedule_handle.rb +126 -0
  85. data/lib/temporalio/client/workflow_execution.rb +100 -0
  86. data/lib/temporalio/client/workflow_execution_count.rb +36 -0
  87. data/lib/temporalio/client/workflow_execution_status.rb +18 -0
  88. data/lib/temporalio/client/workflow_handle.rb +326 -180
  89. data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
  90. data/lib/temporalio/client/workflow_update_handle.rb +65 -0
  91. data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
  92. data/lib/temporalio/client.rb +447 -94
  93. data/lib/temporalio/common_enums.rb +41 -0
  94. data/lib/temporalio/converters/data_converter.rb +99 -0
  95. data/lib/temporalio/converters/failure_converter.rb +202 -0
  96. data/lib/temporalio/converters/payload_codec.rb +26 -0
  97. data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
  98. data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
  99. data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
  100. data/lib/temporalio/converters/payload_converter/composite.rb +66 -0
  101. data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
  102. data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
  103. data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
  104. data/lib/temporalio/converters/payload_converter.rb +71 -0
  105. data/lib/temporalio/converters/raw_value.rb +20 -0
  106. data/lib/temporalio/converters.rb +9 -0
  107. data/lib/temporalio/error/failure.rb +119 -94
  108. data/lib/temporalio/error.rb +155 -0
  109. data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
  110. data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +31 -0
  111. data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
  112. data/lib/temporalio/internal/bridge/api/common/common.rb +26 -0
  113. data/lib/temporalio/internal/bridge/api/core_interface.rb +40 -0
  114. data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
  115. data/lib/temporalio/internal/bridge/api/nexus/nexus.rb +33 -0
  116. data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +56 -0
  117. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +57 -0
  118. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +30 -0
  119. data/lib/temporalio/internal/bridge/api.rb +3 -0
  120. data/lib/temporalio/internal/bridge/client.rb +95 -0
  121. data/lib/temporalio/internal/bridge/runtime.rb +53 -0
  122. data/lib/temporalio/internal/bridge/testing.rb +66 -0
  123. data/lib/temporalio/internal/bridge/worker.rb +85 -0
  124. data/lib/temporalio/internal/bridge.rb +36 -0
  125. data/lib/temporalio/internal/client/implementation.rb +700 -0
  126. data/lib/temporalio/internal/metric.rb +122 -0
  127. data/lib/temporalio/internal/proto_utils.rb +133 -0
  128. data/lib/temporalio/internal/worker/activity_worker.rb +373 -0
  129. data/lib/temporalio/internal/worker/multi_runner.rb +213 -0
  130. data/lib/temporalio/internal/worker/workflow_instance/child_workflow_handle.rb +54 -0
  131. data/lib/temporalio/internal/worker/workflow_instance/context.rb +329 -0
  132. data/lib/temporalio/internal/worker/workflow_instance/details.rb +44 -0
  133. data/lib/temporalio/internal/worker/workflow_instance/external_workflow_handle.rb +32 -0
  134. data/lib/temporalio/internal/worker/workflow_instance/externally_immutable_hash.rb +22 -0
  135. data/lib/temporalio/internal/worker/workflow_instance/handler_execution.rb +25 -0
  136. data/lib/temporalio/internal/worker/workflow_instance/handler_hash.rb +41 -0
  137. data/lib/temporalio/internal/worker/workflow_instance/illegal_call_tracer.rb +97 -0
  138. data/lib/temporalio/internal/worker/workflow_instance/inbound_implementation.rb +62 -0
  139. data/lib/temporalio/internal/worker/workflow_instance/outbound_implementation.rb +415 -0
  140. data/lib/temporalio/internal/worker/workflow_instance/replay_safe_logger.rb +37 -0
  141. data/lib/temporalio/internal/worker/workflow_instance/replay_safe_metric.rb +40 -0
  142. data/lib/temporalio/internal/worker/workflow_instance/scheduler.rb +163 -0
  143. data/lib/temporalio/internal/worker/workflow_instance.rb +730 -0
  144. data/lib/temporalio/internal/worker/workflow_worker.rb +196 -0
  145. data/lib/temporalio/internal.rb +7 -0
  146. data/lib/temporalio/metric.rb +109 -0
  147. data/lib/temporalio/retry_policy.rb +55 -73
  148. data/lib/temporalio/runtime.rb +302 -13
  149. data/lib/temporalio/scoped_logger.rb +96 -0
  150. data/lib/temporalio/search_attributes.rb +343 -0
  151. data/lib/temporalio/testing/activity_environment.rb +132 -0
  152. data/lib/temporalio/testing/workflow_environment.rb +345 -74
  153. data/lib/temporalio/testing.rb +4 -169
  154. data/lib/temporalio/version.rb +3 -1
  155. data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
  156. data/lib/temporalio/worker/activity_executor/thread_pool.rb +46 -0
  157. data/lib/temporalio/worker/activity_executor.rb +55 -0
  158. data/lib/temporalio/worker/interceptor.rb +362 -0
  159. data/lib/temporalio/worker/thread_pool.rb +237 -0
  160. data/lib/temporalio/worker/tuner.rb +151 -0
  161. data/lib/temporalio/worker/workflow_executor/thread_pool.rb +230 -0
  162. data/lib/temporalio/worker/workflow_executor.rb +26 -0
  163. data/lib/temporalio/worker.rb +554 -161
  164. data/lib/temporalio/workflow/activity_cancellation_type.rb +20 -0
  165. data/lib/temporalio/workflow/child_workflow_cancellation_type.rb +21 -0
  166. data/lib/temporalio/workflow/child_workflow_handle.rb +43 -0
  167. data/lib/temporalio/workflow/definition.rb +566 -0
  168. data/lib/temporalio/workflow/external_workflow_handle.rb +41 -0
  169. data/lib/temporalio/workflow/future.rb +117 -104
  170. data/lib/temporalio/workflow/handler_unfinished_policy.rb +13 -0
  171. data/lib/temporalio/workflow/info.rb +63 -57
  172. data/lib/temporalio/workflow/parent_close_policy.rb +19 -0
  173. data/lib/temporalio/workflow/update_info.rb +20 -0
  174. data/lib/temporalio/workflow.rb +523 -0
  175. data/lib/temporalio/workflow_history.rb +22 -0
  176. data/lib/temporalio.rb +6 -7
  177. data/temporalio.gemspec +20 -39
  178. metadata +171 -710
  179. data/bridge/Cargo.lock +0 -2997
  180. data/bridge/Cargo.toml +0 -29
  181. data/bridge/sdk-core/ARCHITECTURE.md +0 -76
  182. data/bridge/sdk-core/Cargo.toml +0 -2
  183. data/bridge/sdk-core/LICENSE.txt +0 -23
  184. data/bridge/sdk-core/README.md +0 -117
  185. data/bridge/sdk-core/arch_docs/diagrams/README.md +0 -10
  186. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +0 -40
  187. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
  188. data/bridge/sdk-core/arch_docs/sticky_queues.md +0 -51
  189. data/bridge/sdk-core/client/Cargo.toml +0 -40
  190. data/bridge/sdk-core/client/LICENSE.txt +0 -23
  191. data/bridge/sdk-core/client/src/lib.rs +0 -1462
  192. data/bridge/sdk-core/client/src/metrics.rs +0 -174
  193. data/bridge/sdk-core/client/src/raw.rs +0 -932
  194. data/bridge/sdk-core/client/src/retry.rs +0 -763
  195. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +0 -185
  196. data/bridge/sdk-core/core/Cargo.toml +0 -129
  197. data/bridge/sdk-core/core/LICENSE.txt +0 -23
  198. data/bridge/sdk-core/core/benches/workflow_replay.rs +0 -76
  199. data/bridge/sdk-core/core/src/abstractions.rs +0 -355
  200. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +0 -1049
  201. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +0 -221
  202. data/bridge/sdk-core/core/src/core_tests/determinism.rs +0 -270
  203. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +0 -1046
  204. data/bridge/sdk-core/core/src/core_tests/mod.rs +0 -100
  205. data/bridge/sdk-core/core/src/core_tests/queries.rs +0 -893
  206. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +0 -65
  207. data/bridge/sdk-core/core/src/core_tests/workers.rs +0 -257
  208. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +0 -124
  209. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +0 -2433
  210. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +0 -609
  211. data/bridge/sdk-core/core/src/internal_flags.rs +0 -136
  212. data/bridge/sdk-core/core/src/lib.rs +0 -289
  213. data/bridge/sdk-core/core/src/pollers/mod.rs +0 -54
  214. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +0 -297
  215. data/bridge/sdk-core/core/src/protosext/mod.rs +0 -428
  216. data/bridge/sdk-core/core/src/replay/mod.rs +0 -215
  217. data/bridge/sdk-core/core/src/retry_logic.rs +0 -202
  218. data/bridge/sdk-core/core/src/telemetry/log_export.rs +0 -190
  219. data/bridge/sdk-core/core/src/telemetry/metrics.rs +0 -462
  220. data/bridge/sdk-core/core/src/telemetry/mod.rs +0 -423
  221. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +0 -83
  222. data/bridge/sdk-core/core/src/test_help/mod.rs +0 -939
  223. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +0 -536
  224. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +0 -89
  225. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +0 -1278
  226. data/bridge/sdk-core/core/src/worker/activities.rs +0 -557
  227. data/bridge/sdk-core/core/src/worker/client/mocks.rs +0 -107
  228. data/bridge/sdk-core/core/src/worker/client.rs +0 -389
  229. data/bridge/sdk-core/core/src/worker/mod.rs +0 -677
  230. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
  231. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +0 -99
  232. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +0 -1111
  233. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +0 -964
  234. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +0 -294
  235. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -168
  236. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +0 -918
  237. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +0 -137
  238. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +0 -158
  239. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +0 -130
  240. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +0 -1525
  241. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +0 -324
  242. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +0 -179
  243. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -659
  244. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +0 -439
  245. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +0 -435
  246. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +0 -175
  247. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +0 -249
  248. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +0 -85
  249. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +0 -1280
  250. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +0 -269
  251. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -213
  252. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +0 -1305
  253. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +0 -1276
  254. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +0 -128
  255. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +0 -125
  256. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +0 -85
  257. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +0 -117
  258. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +0 -24
  259. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +0 -715
  260. data/bridge/sdk-core/core-api/Cargo.toml +0 -33
  261. data/bridge/sdk-core/core-api/LICENSE.txt +0 -23
  262. data/bridge/sdk-core/core-api/src/errors.rs +0 -62
  263. data/bridge/sdk-core/core-api/src/lib.rs +0 -113
  264. data/bridge/sdk-core/core-api/src/telemetry.rs +0 -141
  265. data/bridge/sdk-core/core-api/src/worker.rs +0 -161
  266. data/bridge/sdk-core/etc/deps.svg +0 -162
  267. data/bridge/sdk-core/etc/dynamic-config.yaml +0 -2
  268. data/bridge/sdk-core/etc/otel-collector-config.yaml +0 -36
  269. data/bridge/sdk-core/etc/prometheus.yaml +0 -6
  270. data/bridge/sdk-core/etc/regen-depgraph.sh +0 -5
  271. data/bridge/sdk-core/fsm/Cargo.toml +0 -18
  272. data/bridge/sdk-core/fsm/LICENSE.txt +0 -23
  273. data/bridge/sdk-core/fsm/README.md +0 -3
  274. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  275. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -23
  276. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +0 -650
  277. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  278. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +0 -18
  279. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  280. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +0 -41
  281. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +0 -14
  282. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +0 -11
  283. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +0 -32
  284. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +0 -31
  285. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +0 -46
  286. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +0 -29
  287. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -12
  288. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +0 -32
  289. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +0 -18
  290. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  291. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +0 -11
  292. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  293. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +0 -11
  294. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  295. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  296. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -23
  297. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +0 -254
  298. data/bridge/sdk-core/fsm/src/lib.rs +0 -2
  299. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  300. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  301. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  302. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  303. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  304. data/bridge/sdk-core/integ-with-otel.sh +0 -7
  305. data/bridge/sdk-core/protos/api_upstream/README.md +0 -9
  306. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
  307. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -9
  308. data/bridge/sdk-core/protos/api_upstream/build/go.mod +0 -7
  309. data/bridge/sdk-core/protos/api_upstream/build/go.sum +0 -5
  310. data/bridge/sdk-core/protos/api_upstream/build/tools.go +0 -29
  311. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +0 -141
  312. data/bridge/sdk-core/protos/api_upstream/go.mod +0 -6
  313. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -89
  314. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +0 -248
  315. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +0 -123
  316. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -47
  317. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -52
  318. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -56
  319. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -170
  320. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -123
  321. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -51
  322. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -50
  323. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -41
  324. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -60
  325. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -59
  326. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -56
  327. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -122
  328. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -108
  329. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -114
  330. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -56
  331. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +0 -787
  332. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -99
  333. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -124
  334. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -80
  335. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -57
  336. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +0 -61
  337. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -55
  338. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -379
  339. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -63
  340. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -108
  341. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +0 -111
  342. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +0 -59
  343. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -146
  344. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -1199
  345. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -415
  346. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +0 -63
  347. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -79
  348. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -80
  349. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -78
  350. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +0 -16
  351. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +0 -31
  352. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -31
  353. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -270
  354. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -305
  355. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -35
  356. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +0 -38
  357. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +0 -13
  358. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
  359. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -63
  360. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -90
  361. data/bridge/sdk-core/rustfmt.toml +0 -1
  362. data/bridge/sdk-core/sdk/Cargo.toml +0 -48
  363. data/bridge/sdk-core/sdk/LICENSE.txt +0 -23
  364. data/bridge/sdk-core/sdk/src/activity_context.rs +0 -230
  365. data/bridge/sdk-core/sdk/src/app_data.rs +0 -37
  366. data/bridge/sdk-core/sdk/src/interceptors.rs +0 -50
  367. data/bridge/sdk-core/sdk/src/lib.rs +0 -861
  368. data/bridge/sdk-core/sdk/src/payload_converter.rs +0 -11
  369. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +0 -295
  370. data/bridge/sdk-core/sdk/src/workflow_context.rs +0 -694
  371. data/bridge/sdk-core/sdk/src/workflow_future.rs +0 -500
  372. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +0 -33
  373. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +0 -23
  374. data/bridge/sdk-core/sdk-core-protos/build.rs +0 -142
  375. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +0 -7
  376. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +0 -557
  377. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +0 -234
  378. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +0 -2088
  379. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +0 -48
  380. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +0 -14
  381. data/bridge/sdk-core/test-utils/Cargo.toml +0 -38
  382. data/bridge/sdk-core/test-utils/src/canned_histories.rs +0 -1389
  383. data/bridge/sdk-core/test-utils/src/histfetch.rs +0 -28
  384. data/bridge/sdk-core/test-utils/src/lib.rs +0 -709
  385. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +0 -50
  386. data/bridge/sdk-core/test-utils/src/workflows.rs +0 -29
  387. data/bridge/sdk-core/tests/fuzzy_workflow.rs +0 -130
  388. data/bridge/sdk-core/tests/heavy_tests.rs +0 -265
  389. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +0 -36
  390. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +0 -150
  391. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +0 -223
  392. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +0 -239
  393. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -90
  394. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +0 -314
  395. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +0 -151
  396. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +0 -902
  397. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
  398. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -60
  399. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -51
  400. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -51
  401. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -64
  402. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -47
  403. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -669
  404. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -54
  405. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -92
  406. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +0 -228
  407. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +0 -94
  408. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -171
  409. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +0 -85
  410. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -120
  411. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +0 -77
  412. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +0 -596
  413. data/bridge/sdk-core/tests/main.rs +0 -103
  414. data/bridge/sdk-core/tests/runner.rs +0 -132
  415. data/bridge/sdk-core/tests/wf_input_replay.rs +0 -32
  416. data/bridge/src/connection.rs +0 -202
  417. data/bridge/src/lib.rs +0 -494
  418. data/bridge/src/runtime.rs +0 -54
  419. data/bridge/src/test_server.rs +0 -153
  420. data/bridge/src/worker.rs +0 -197
  421. data/ext/Rakefile +0 -9
  422. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +0 -14
  423. data/lib/gen/temporal/api/batch/v1/message_pb.rb +0 -50
  424. data/lib/gen/temporal/api/command/v1/message_pb.rb +0 -160
  425. data/lib/gen/temporal/api/common/v1/message_pb.rb +0 -73
  426. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +0 -33
  427. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +0 -37
  428. data/lib/gen/temporal/api/enums/v1/common_pb.rb +0 -42
  429. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +0 -68
  430. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +0 -79
  431. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +0 -37
  432. data/lib/gen/temporal/api/enums/v1/query_pb.rb +0 -31
  433. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +0 -24
  434. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +0 -28
  435. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +0 -30
  436. data/lib/gen/temporal/api/enums/v1/update_pb.rb +0 -25
  437. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +0 -89
  438. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +0 -84
  439. data/lib/gen/temporal/api/failure/v1/message_pb.rb +0 -83
  440. data/lib/gen/temporal/api/filter/v1/message_pb.rb +0 -40
  441. data/lib/gen/temporal/api/history/v1/message_pb.rb +0 -498
  442. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +0 -64
  443. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +0 -88
  444. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +0 -20
  445. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +0 -30
  446. data/lib/gen/temporal/api/query/v1/message_pb.rb +0 -38
  447. data/lib/gen/temporal/api/replication/v1/message_pb.rb +0 -37
  448. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +0 -149
  449. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +0 -23
  450. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +0 -73
  451. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +0 -21
  452. data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -72
  453. data/lib/gen/temporal/api/version/v1/message_pb.rb +0 -41
  454. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +0 -111
  455. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +0 -798
  456. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +0 -20
  457. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +0 -62
  458. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +0 -61
  459. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +0 -61
  460. data/lib/gen/temporal/sdk/core/common/common_pb.rb +0 -26
  461. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +0 -40
  462. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +0 -31
  463. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +0 -171
  464. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +0 -200
  465. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +0 -41
  466. data/lib/temporalio/bridge/connect_options.rb +0 -15
  467. data/lib/temporalio/bridge/error.rb +0 -8
  468. data/lib/temporalio/bridge/retry_config.rb +0 -24
  469. data/lib/temporalio/bridge/tls_options.rb +0 -19
  470. data/lib/temporalio/bridge.rb +0 -14
  471. data/lib/temporalio/client/implementation.rb +0 -340
  472. data/lib/temporalio/connection/retry_config.rb +0 -44
  473. data/lib/temporalio/connection/service.rb +0 -20
  474. data/lib/temporalio/connection/test_service.rb +0 -92
  475. data/lib/temporalio/connection/tls_options.rb +0 -51
  476. data/lib/temporalio/connection/workflow_service.rb +0 -731
  477. data/lib/temporalio/connection.rb +0 -86
  478. data/lib/temporalio/data_converter.rb +0 -191
  479. data/lib/temporalio/error/workflow_failure.rb +0 -19
  480. data/lib/temporalio/errors.rb +0 -40
  481. data/lib/temporalio/failure_converter/base.rb +0 -26
  482. data/lib/temporalio/failure_converter/basic.rb +0 -319
  483. data/lib/temporalio/failure_converter.rb +0 -7
  484. data/lib/temporalio/interceptor/activity_inbound.rb +0 -22
  485. data/lib/temporalio/interceptor/activity_outbound.rb +0 -24
  486. data/lib/temporalio/interceptor/chain.rb +0 -28
  487. data/lib/temporalio/interceptor/client.rb +0 -127
  488. data/lib/temporalio/interceptor.rb +0 -22
  489. data/lib/temporalio/payload_codec/base.rb +0 -32
  490. data/lib/temporalio/payload_converter/base.rb +0 -24
  491. data/lib/temporalio/payload_converter/bytes.rb +0 -27
  492. data/lib/temporalio/payload_converter/composite.rb +0 -49
  493. data/lib/temporalio/payload_converter/encoding_base.rb +0 -35
  494. data/lib/temporalio/payload_converter/json.rb +0 -26
  495. data/lib/temporalio/payload_converter/nil.rb +0 -26
  496. data/lib/temporalio/payload_converter.rb +0 -14
  497. data/lib/temporalio/retry_state.rb +0 -35
  498. data/lib/temporalio/testing/time_skipping_handle.rb +0 -32
  499. data/lib/temporalio/testing/time_skipping_interceptor.rb +0 -23
  500. data/lib/temporalio/timeout_type.rb +0 -29
  501. data/lib/temporalio/worker/activity_runner.rb +0 -114
  502. data/lib/temporalio/worker/activity_worker.rb +0 -164
  503. data/lib/temporalio/worker/reactor.rb +0 -46
  504. data/lib/temporalio/worker/runner.rb +0 -63
  505. data/lib/temporalio/worker/sync_worker.rb +0 -124
  506. data/lib/temporalio/worker/thread_pool_executor.rb +0 -51
  507. data/lib/temporalio/workflow/async.rb +0 -46
  508. data/lib/temporalio/workflow/execution_info.rb +0 -54
  509. data/lib/temporalio/workflow/execution_status.rb +0 -36
  510. data/lib/temporalio/workflow/id_reuse_policy.rb +0 -36
  511. data/lib/temporalio/workflow/query_reject_condition.rb +0 -33
  512. data/lib/thermite_patch.rb +0 -33
  513. data/sig/async.rbs +0 -17
  514. data/sig/protobuf.rbs +0 -16
  515. data/sig/protos/dependencies/gogoproto/gogo.rbs +0 -914
  516. data/sig/protos/google/protobuf/any.rbs +0 -157
  517. data/sig/protos/google/protobuf/descriptor.rbs +0 -2825
  518. data/sig/protos/google/protobuf/duration.rbs +0 -114
  519. data/sig/protos/google/protobuf/empty.rbs +0 -36
  520. data/sig/protos/google/protobuf/timestamp.rbs +0 -145
  521. data/sig/protos/google/protobuf/wrappers.rbs +0 -358
  522. data/sig/protos/temporal/api/batch/v1/message.rbs +0 -300
  523. data/sig/protos/temporal/api/command/v1/message.rbs +0 -1399
  524. data/sig/protos/temporal/api/common/v1/message.rbs +0 -528
  525. data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +0 -79
  526. data/sig/protos/temporal/api/enums/v1/command_type.rbs +0 -68
  527. data/sig/protos/temporal/api/enums/v1/common.rbs +0 -118
  528. data/sig/protos/temporal/api/enums/v1/event_type.rbs +0 -264
  529. data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +0 -277
  530. data/sig/protos/temporal/api/enums/v1/namespace.rbs +0 -108
  531. data/sig/protos/temporal/api/enums/v1/query.rbs +0 -81
  532. data/sig/protos/temporal/api/enums/v1/reset.rbs +0 -44
  533. data/sig/protos/temporal/api/enums/v1/schedule.rbs +0 -72
  534. data/sig/protos/temporal/api/enums/v1/task_queue.rbs +0 -92
  535. data/sig/protos/temporal/api/enums/v1/update.rbs +0 -64
  536. data/sig/protos/temporal/api/enums/v1/workflow.rbs +0 -371
  537. data/sig/protos/temporal/api/errordetails/v1/message.rbs +0 -551
  538. data/sig/protos/temporal/api/failure/v1/message.rbs +0 -581
  539. data/sig/protos/temporal/api/filter/v1/message.rbs +0 -171
  540. data/sig/protos/temporal/api/history/v1/message.rbs +0 -4609
  541. data/sig/protos/temporal/api/namespace/v1/message.rbs +0 -410
  542. data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +0 -643
  543. data/sig/protos/temporal/api/operatorservice/v1/service.rbs +0 -17
  544. data/sig/protos/temporal/api/protocol/v1/message.rbs +0 -84
  545. data/sig/protos/temporal/api/query/v1/message.rbs +0 -182
  546. data/sig/protos/temporal/api/replication/v1/message.rbs +0 -148
  547. data/sig/protos/temporal/api/schedule/v1/message.rbs +0 -1488
  548. data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +0 -110
  549. data/sig/protos/temporal/api/taskqueue/v1/message.rbs +0 -486
  550. data/sig/protos/temporal/api/testservice/v1/request_response.rbs +0 -249
  551. data/sig/protos/temporal/api/testservice/v1/service.rbs +0 -15
  552. data/sig/protos/temporal/api/update/v1/message.rbs +0 -489
  553. data/sig/protos/temporal/api/version/v1/message.rbs +0 -184
  554. data/sig/protos/temporal/api/workflow/v1/message.rbs +0 -824
  555. data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +0 -7250
  556. data/sig/protos/temporal/api/workflowservice/v1/service.rbs +0 -22
  557. data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +0 -380
  558. data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +0 -386
  559. data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +0 -323
  560. data/sig/protos/temporal/sdk/core/common/common.rbs +0 -62
  561. data/sig/protos/temporal/sdk/core/core_interface.rbs +0 -101
  562. data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +0 -119
  563. data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +0 -1473
  564. data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +0 -1784
  565. data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +0 -180
  566. data/sig/ruby.rbs +0 -12
  567. data/sig/temporalio/activity/context.rbs +0 -29
  568. data/sig/temporalio/activity/info.rbs +0 -43
  569. data/sig/temporalio/activity.rbs +0 -19
  570. data/sig/temporalio/bridge/connect_options.rbs +0 -19
  571. data/sig/temporalio/bridge/error.rbs +0 -8
  572. data/sig/temporalio/bridge/retry_config.rbs +0 -21
  573. data/sig/temporalio/bridge/tls_options.rbs +0 -17
  574. data/sig/temporalio/bridge.rbs +0 -71
  575. data/sig/temporalio/client/implementation.rbs +0 -38
  576. data/sig/temporalio/client/workflow_handle.rbs +0 -41
  577. data/sig/temporalio/client.rbs +0 -35
  578. data/sig/temporalio/connection/retry_config.rbs +0 -37
  579. data/sig/temporalio/connection/service.rbs +0 -14
  580. data/sig/temporalio/connection/test_service.rbs +0 -13
  581. data/sig/temporalio/connection/tls_options.rbs +0 -43
  582. data/sig/temporalio/connection/workflow_service.rbs +0 -48
  583. data/sig/temporalio/connection.rbs +0 -30
  584. data/sig/temporalio/data_converter.rbs +0 -35
  585. data/sig/temporalio/error/failure.rbs +0 -121
  586. data/sig/temporalio/error/workflow_failure.rbs +0 -9
  587. data/sig/temporalio/errors.rbs +0 -36
  588. data/sig/temporalio/failure_converter/base.rbs +0 -12
  589. data/sig/temporalio/failure_converter/basic.rbs +0 -86
  590. data/sig/temporalio/failure_converter.rbs +0 -5
  591. data/sig/temporalio/interceptor/activity_inbound.rbs +0 -21
  592. data/sig/temporalio/interceptor/activity_outbound.rbs +0 -10
  593. data/sig/temporalio/interceptor/chain.rbs +0 -24
  594. data/sig/temporalio/interceptor/client.rbs +0 -148
  595. data/sig/temporalio/interceptor.rbs +0 -6
  596. data/sig/temporalio/payload_codec/base.rbs +0 -12
  597. data/sig/temporalio/payload_converter/base.rbs +0 -12
  598. data/sig/temporalio/payload_converter/bytes.rbs +0 -9
  599. data/sig/temporalio/payload_converter/composite.rbs +0 -19
  600. data/sig/temporalio/payload_converter/encoding_base.rbs +0 -14
  601. data/sig/temporalio/payload_converter/json.rbs +0 -9
  602. data/sig/temporalio/payload_converter/nil.rbs +0 -9
  603. data/sig/temporalio/payload_converter.rbs +0 -5
  604. data/sig/temporalio/retry_policy.rbs +0 -25
  605. data/sig/temporalio/retry_state.rbs +0 -20
  606. data/sig/temporalio/runtime.rbs +0 -12
  607. data/sig/temporalio/testing/time_skipping_handle.rbs +0 -15
  608. data/sig/temporalio/testing/time_skipping_interceptor.rbs +0 -13
  609. data/sig/temporalio/testing/workflow_environment.rbs +0 -22
  610. data/sig/temporalio/testing.rbs +0 -35
  611. data/sig/temporalio/timeout_type.rbs +0 -15
  612. data/sig/temporalio/version.rbs +0 -3
  613. data/sig/temporalio/worker/activity_runner.rbs +0 -35
  614. data/sig/temporalio/worker/activity_worker.rbs +0 -44
  615. data/sig/temporalio/worker/reactor.rbs +0 -22
  616. data/sig/temporalio/worker/runner.rbs +0 -21
  617. data/sig/temporalio/worker/sync_worker.rbs +0 -23
  618. data/sig/temporalio/worker/thread_pool_executor.rbs +0 -23
  619. data/sig/temporalio/worker.rbs +0 -46
  620. data/sig/temporalio/workflow/async.rbs +0 -9
  621. data/sig/temporalio/workflow/execution_info.rbs +0 -55
  622. data/sig/temporalio/workflow/execution_status.rbs +0 -21
  623. data/sig/temporalio/workflow/future.rbs +0 -40
  624. data/sig/temporalio/workflow/id_reuse_policy.rbs +0 -15
  625. data/sig/temporalio/workflow/info.rbs +0 -55
  626. data/sig/temporalio/workflow/query_reject_condition.rbs +0 -14
  627. data/sig/temporalio.rbs +0 -2
  628. 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
- }