temporalio 0.1.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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
- }