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,715 +0,0 @@
1
- #[cfg(feature = "save_wf_inputs")]
2
- mod saved_wf_inputs;
3
- #[cfg(feature = "save_wf_inputs")]
4
- mod tonic_status_serde;
5
-
6
- #[cfg(feature = "save_wf_inputs")]
7
- pub use saved_wf_inputs::replay_wf_state_inputs;
8
-
9
- use crate::{
10
- abstractions::dbg_panic,
11
- worker::workflow::{
12
- managed_run::RunUpdateAct,
13
- run_cache::RunCache,
14
- wft_extraction::{HistfetchRC, HistoryFetchReq, WFTExtractorOutput},
15
- *,
16
- },
17
- MetricsContext,
18
- };
19
- use futures::{stream, stream::PollNext, Stream, StreamExt};
20
- use std::{collections::VecDeque, fmt::Debug, future, sync::Arc};
21
- use temporal_sdk_core_api::errors::PollWfError;
22
- use temporal_sdk_core_protos::coresdk::workflow_activation::remove_from_cache::EvictionReason;
23
- use tokio_util::sync::CancellationToken;
24
- use tracing::{Level, Span};
25
-
26
- /// This struct holds all the state needed for tracking the state of currently cached workflow runs
27
- /// and directs all actions which affect them. It is ultimately the top-level arbiter of nearly
28
- /// everything important relating to workflow state.
29
- ///
30
- /// See [WFStream::build] for more
31
- pub(super) struct WFStream {
32
- runs: RunCache,
33
- /// Buffered polls for new runs which need a cache slot to open up before we can handle them
34
- buffered_polls_need_cache_slot: VecDeque<PermittedWFT>,
35
- /// Is filled with runs that we decided need to have their history fetched during state
36
- /// manipulation. Must be drained after handling each input.
37
- runs_needing_fetching: VecDeque<HistoryFetchReq>,
38
-
39
- history_fetch_refcounter: Arc<HistfetchRC>,
40
- shutdown_token: CancellationToken,
41
- ignore_evicts_on_shutdown: bool,
42
-
43
- metrics: MetricsContext,
44
-
45
- #[cfg(feature = "save_wf_inputs")]
46
- wf_state_inputs: Option<UnboundedSender<Vec<u8>>>,
47
- }
48
- impl WFStream {
49
- /// Constructs workflow state management and returns a stream which outputs activations.
50
- ///
51
- /// * `wft_stream` is a stream of validated poll responses and fetched history pages as returned
52
- /// by a poller (or mock), via [WFTExtractor].
53
- /// * `local_rx` is a stream of actions that workflow state needs to see. Things like
54
- /// completions, local activities finishing, etc. See [LocalInputs].
55
- /// * `local_activity_request_sink` is used to handle outgoing requests to start or cancel
56
- /// local activities, and may return resolutions that need to be handled immediately.
57
- ///
58
- /// The stream inputs are combined into a stream of [WFActStreamInput]s. The stream processor
59
- /// then takes action on those inputs, mutating the [WFStream] state, and then may yield
60
- /// activations.
61
- ///
62
- /// Importantly, nothing async happens while actually mutating state. This means all changes to
63
- /// all workflow state can be represented purely via the stream of inputs, plus the
64
- /// calls/retvals from the LA request sink, which is the last unfortunate bit of impurity in
65
- /// the design. Eliminating it would be nice, so that all inputs come from the passed-in streams
66
- /// and all outputs flow from the return stream, but it's difficult to do so since it would
67
- /// require "pausing" in-progress changes to a run while sending & waiting for response from
68
- /// local activity management. Likely the best option would be to move the pure state info
69
- /// needed to determine immediate responses into LA state machines themselves (out of the LA
70
- /// manager), which is a quite substantial change.
71
- pub(super) fn build(
72
- basics: WorkflowBasics,
73
- wft_stream: impl Stream<Item = Result<WFTExtractorOutput, tonic::Status>> + Send + 'static,
74
- local_rx: impl Stream<Item = LocalInput> + Send + 'static,
75
- local_activity_request_sink: impl LocalActivityRequestSink,
76
- ) -> impl Stream<Item = Result<WFStreamOutput, PollWfError>> {
77
- let all_inputs = stream::select_with_strategy(
78
- local_rx.map(Into::into),
79
- wft_stream
80
- .map(Into::into)
81
- .chain(stream::once(async { ExternalPollerInputs::PollerDead }))
82
- .map(Into::into)
83
- .boxed(),
84
- // Priority always goes to the local stream
85
- |_: &mut ()| PollNext::Left,
86
- );
87
- Self::build_internal(all_inputs, basics, local_activity_request_sink)
88
- }
89
-
90
- fn build_internal(
91
- all_inputs: impl Stream<Item = WFStreamInput>,
92
- basics: WorkflowBasics,
93
- local_activity_request_sink: impl LocalActivityRequestSink,
94
- ) -> impl Stream<Item = Result<WFStreamOutput, PollWfError>> {
95
- let mut state = WFStream {
96
- buffered_polls_need_cache_slot: Default::default(),
97
- runs: RunCache::new(
98
- basics.max_cached_workflows,
99
- basics.namespace.clone(),
100
- basics.server_capabilities.clone(),
101
- local_activity_request_sink,
102
- basics.metrics.clone(),
103
- ),
104
- shutdown_token: basics.shutdown_token,
105
- ignore_evicts_on_shutdown: basics.ignore_evicts_on_shutdown,
106
- metrics: basics.metrics,
107
- runs_needing_fetching: Default::default(),
108
- history_fetch_refcounter: Arc::new(HistfetchRC {}),
109
-
110
- #[cfg(feature = "save_wf_inputs")]
111
- wf_state_inputs: basics.wf_state_inputs,
112
- };
113
- all_inputs
114
- .map(move |action: WFStreamInput| {
115
- let span = span!(Level::DEBUG, "new_stream_input", action=?action);
116
- let _span_g = span.enter();
117
-
118
- #[cfg(feature = "save_wf_inputs")]
119
- let maybe_write = state.prep_input(&action);
120
-
121
- let mut activations = vec![];
122
- let maybe_act = match action {
123
- WFStreamInput::NewWft(pwft) => {
124
- debug!(run_id=%pwft.work.execution.run_id, "New WFT");
125
- state.instantiate_or_update(pwft)
126
- }
127
- WFStreamInput::Local(local_input) => {
128
- let _span_g = local_input.span.enter();
129
- if let Some(rid) = local_input.input.run_id() {
130
- if let Some(rh) = state.runs.get_mut(rid) {
131
- rh.record_span_fields(&local_input.span);
132
- }
133
- }
134
- match local_input.input {
135
- LocalInputs::Completion(completion) => {
136
- activations.extend(
137
- state.process_completion(NewOrFetchedComplete::New(completion)),
138
- );
139
- None // completions can return more than one activation
140
- }
141
- LocalInputs::FetchedPageCompletion { paginator, update } => {
142
- activations.extend(state.process_completion(
143
- NewOrFetchedComplete::Fetched(update, paginator),
144
- ));
145
- None // completions can return more than one activation
146
- }
147
- LocalInputs::PostActivation(report) => {
148
- state.process_post_activation(report)
149
- }
150
- LocalInputs::LocalResolution(res) => state.local_resolution(res),
151
- LocalInputs::HeartbeatTimeout(hbt) => {
152
- state.process_heartbeat_timeout(hbt)
153
- }
154
- LocalInputs::RequestEviction(evict) => {
155
- state.request_eviction(evict).into_run_update_resp()
156
- }
157
- LocalInputs::GetStateInfo(gsi) => {
158
- let _ = gsi.response_tx.send(WorkflowStateInfo {
159
- cached_workflows: state.runs.len(),
160
- outstanding_wft: state.outstanding_wfts(),
161
- });
162
- None
163
- }
164
- }
165
- }
166
- WFStreamInput::FailedFetch { run_id, err } => state
167
- .request_eviction(RequestEvictMsg {
168
- run_id,
169
- message: format!("Fetching history failed: {err:?}"),
170
- reason: EvictionReason::PaginationOrHistoryFetch,
171
- })
172
- .into_run_update_resp(),
173
- WFStreamInput::PollerDead => {
174
- debug!("WFT poller died, beginning shutdown");
175
- state.shutdown_token.cancel();
176
- None
177
- }
178
- WFStreamInput::PollerError(e) => {
179
- warn!("WFT poller errored, shutting down");
180
- return Err(PollWfError::TonicError(e));
181
- }
182
- };
183
-
184
- activations.extend(maybe_act.into_iter());
185
- activations.extend(state.reconcile_buffered());
186
-
187
- // Always flush *after* actually handling the input, as this allows LA sink
188
- // responses to be recorded before the input, so they can be read and buffered to be
189
- // replayed during the handling of the input itself.
190
- #[cfg(feature = "save_wf_inputs")]
191
- if let Some(write) = maybe_write {
192
- state.flush_write(write);
193
- }
194
-
195
- if state.shutdown_done() {
196
- info!("Workflow shutdown is done");
197
- return Err(PollWfError::ShutDown);
198
- }
199
-
200
- Ok(WFStreamOutput {
201
- activations: activations.into(),
202
- fetch_histories: std::mem::take(&mut state.runs_needing_fetching),
203
- })
204
- })
205
- .inspect(|o| {
206
- if let Some(e) = o.as_ref().err() {
207
- if !matches!(e, PollWfError::ShutDown) {
208
- error!(
209
- "Workflow processing encountered fatal error and must shut down {:?}",
210
- e
211
- );
212
- }
213
- }
214
- })
215
- // Stop the stream once we have shut down
216
- .take_while(|o| future::ready(!matches!(o, Err(PollWfError::ShutDown))))
217
- }
218
-
219
- /// Instantiate or update run machines with a new WFT
220
- #[instrument(skip(self, pwft)
221
- fields(run_id=%pwft.work.execution.run_id,
222
- workflow_id=%pwft.work.execution.workflow_id))]
223
- fn instantiate_or_update(&mut self, pwft: PermittedWFT) -> RunUpdateAct {
224
- match self._instantiate_or_update(pwft) {
225
- Err(histfetch) => {
226
- self.runs_needing_fetching.push_back(histfetch);
227
- Default::default()
228
- }
229
- Ok(r) => r,
230
- }
231
- }
232
-
233
- fn _instantiate_or_update(
234
- &mut self,
235
- pwft: PermittedWFT,
236
- ) -> Result<RunUpdateAct, HistoryFetchReq> {
237
- // If the run already exists, possibly buffer the work and return early if we can't handle
238
- // it yet.
239
- let pwft = if let Some(rh) = self.runs.get_mut(&pwft.work.execution.run_id) {
240
- if let Some(w) = rh.buffer_wft_if_outstanding_work(pwft) {
241
- w
242
- } else {
243
- return Ok(None);
244
- }
245
- } else {
246
- pwft
247
- };
248
-
249
- let run_id = pwft.work.execution.run_id.clone();
250
- // If our cache is full and this WFT is for an unseen run we must first evict a run before
251
- // we can deal with this task. So, buffer the task in that case.
252
- if !self.runs.has_run(&run_id) && self.runs.is_full() {
253
- self.buffer_resp_on_full_cache(pwft);
254
- return Ok(None);
255
- }
256
-
257
- // This check can't really be lifted up higher since we could EX: See it's in the cache,
258
- // not fetch more history, send the task, see cache is full, buffer it, then evict that
259
- // run, and now we still have a cache miss.
260
- if !self.runs.has_run(&run_id) && pwft.work.is_incremental() {
261
- debug!(run_id=?run_id, "Workflow task has partial history, but workflow is not in \
262
- cache. Will fetch history");
263
- self.metrics.sticky_cache_miss();
264
- return Err(HistoryFetchReq::Full(
265
- CacheMissFetchReq { original_wft: pwft },
266
- self.history_fetch_refcounter.clone(),
267
- ));
268
- }
269
-
270
- let rur = self.runs.instantiate_or_update(pwft);
271
- Ok(rur)
272
- }
273
-
274
- fn process_completion(&mut self, complete: NewOrFetchedComplete) -> Vec<ActivationOrAuto> {
275
- let rh = if let Some(rh) = self.runs.get_mut(complete.run_id()) {
276
- rh
277
- } else {
278
- dbg_panic!("Run missing during completion {:?}", complete);
279
- return vec![];
280
- };
281
- let mut acts: Vec<_> = match complete {
282
- NewOrFetchedComplete::New(complete) => match complete.completion {
283
- ValidatedCompletion::Success {
284
- commands,
285
- used_flags,
286
- ..
287
- } => match rh.successful_completion(commands, used_flags, complete.response_tx) {
288
- Ok(acts) => acts,
289
- Err(npr) => {
290
- self.runs_needing_fetching
291
- .push_back(HistoryFetchReq::NextPage(
292
- npr,
293
- self.history_fetch_refcounter.clone(),
294
- ));
295
- None
296
- }
297
- },
298
- ValidatedCompletion::Fail { failure, .. } => rh.failed_completion(
299
- failure.force_cause(),
300
- EvictionReason::LangFail,
301
- failure,
302
- complete.response_tx,
303
- ),
304
- },
305
- NewOrFetchedComplete::Fetched(update, paginator) => {
306
- rh.fetched_page_completion(update, paginator)
307
- }
308
- }
309
- .into_iter()
310
- .collect();
311
- // Always queue evictions after completion when we have a zero-size cache
312
- if self.runs.cache_capacity() == 0 {
313
- acts.extend(self.request_eviction_of_lru_run().into_run_update_resp())
314
- }
315
- acts
316
- }
317
-
318
- fn process_post_activation(&mut self, report: PostActivationMsg) -> RunUpdateAct {
319
- let run_id = &report.run_id;
320
- let wft_from_complete = report.wft_from_complete;
321
- if let Some((wft, _)) = &wft_from_complete {
322
- if &wft.execution.run_id != run_id {
323
- dbg_panic!(
324
- "Server returned a WFT on completion for a different run ({}) than the \
325
- one being completed ({}). This is a server bug.",
326
- wft.execution.run_id,
327
- run_id
328
- );
329
- }
330
- }
331
-
332
- let mut res = None;
333
-
334
- // If we reported to server, we always want to mark it complete.
335
- let maybe_t = self.complete_wft(run_id, report.wft_report_status);
336
- // Delete the activation
337
- let activation = self
338
- .runs
339
- .get_mut(run_id)
340
- .and_then(|rh| rh.delete_activation());
341
-
342
- // Evict the run if the activation contained an eviction
343
- let mut applied_buffered_poll_for_this_run = false;
344
- if activation.map(|a| a.has_eviction()).unwrap_or_default() {
345
- debug!(run_id=%run_id, "Evicting run");
346
-
347
- if let Some(mut rh) = self.runs.remove(run_id) {
348
- if let Some(buff) = rh.take_buffered_wft() {
349
- // Don't try to apply a buffered poll for this run if we just got a new WFT
350
- // from completing, because by definition that buffered poll is now an
351
- // out-of-date WFT.
352
- if wft_from_complete.is_none() {
353
- res = self.instantiate_or_update(buff);
354
- applied_buffered_poll_for_this_run = true;
355
- }
356
- }
357
- }
358
-
359
- // Attempt to apply a buffered poll for some *other* run, if we didn't have a wft
360
- // from complete or a buffered poll for *this* run.
361
- if wft_from_complete.is_none() && !applied_buffered_poll_for_this_run {
362
- if let Some(buff) = self.buffered_polls_need_cache_slot.pop_front() {
363
- res = self.instantiate_or_update(buff);
364
- }
365
- }
366
- };
367
-
368
- if let Some((wft, pag)) = wft_from_complete {
369
- debug!(run_id=%wft.execution.run_id, "New WFT from completion");
370
- if let Some(t) = maybe_t {
371
- res = self.instantiate_or_update(PermittedWFT {
372
- work: wft,
373
- permit: t.permit,
374
- paginator: pag,
375
- });
376
- }
377
- }
378
-
379
- if res.is_none() {
380
- if let Some(rh) = self.runs.get_mut(run_id) {
381
- // Attempt to produce the next activation if needed
382
- res = rh.check_more_activations();
383
- }
384
- }
385
- res
386
- }
387
-
388
- fn local_resolution(&mut self, msg: LocalResolutionMsg) -> RunUpdateAct {
389
- let run_id = msg.run_id;
390
- if let Some(rh) = self.runs.get_mut(&run_id) {
391
- rh.local_resolution(msg.res)
392
- } else {
393
- // It isn't an explicit error if the machine is missing when a local activity resolves.
394
- // This can happen if an activity reports a timeout after we stopped caring about it.
395
- debug!(run_id = %run_id,
396
- "Tried to resolve a local activity for a run we are no longer tracking");
397
- None
398
- }
399
- }
400
-
401
- fn process_heartbeat_timeout(&mut self, run_id: String) -> RunUpdateAct {
402
- if let Some(rh) = self.runs.get_mut(&run_id) {
403
- rh.heartbeat_timeout()
404
- } else {
405
- None
406
- }
407
- }
408
-
409
- /// Request a workflow eviction. This will (eventually, after replay is done) queue up an
410
- /// activation to evict the workflow from the lang side. Workflow will not *actually* be evicted
411
- /// until lang replies to that activation
412
- fn request_eviction(&mut self, info: RequestEvictMsg) -> EvictionRequestResult {
413
- if let Some(rh) = self.runs.get_mut(&info.run_id) {
414
- rh.request_eviction(info)
415
- } else {
416
- debug!(run_id=%info.run_id, "Eviction requested for unknown run");
417
- EvictionRequestResult::NotFound
418
- }
419
- }
420
-
421
- fn request_eviction_of_lru_run(&mut self) -> EvictionRequestResult {
422
- if let Some(lru_run_id) = self.runs.current_lru_run() {
423
- let run_id = lru_run_id.to_string();
424
- self.request_eviction(RequestEvictMsg {
425
- run_id,
426
- message: "Workflow cache full".to_string(),
427
- reason: EvictionReason::CacheFull,
428
- })
429
- } else {
430
- // This branch shouldn't really be possible
431
- EvictionRequestResult::NotFound
432
- }
433
- }
434
-
435
- fn complete_wft(
436
- &mut self,
437
- run_id: &str,
438
- wft_report_status: WFTReportStatus,
439
- ) -> Option<OutstandingTask> {
440
- // If the WFT completion wasn't sent to the server, but we did see the final event, we still
441
- // want to clear the workflow task. This can really only happen in replay testing, where we
442
- // will generate poll responses with complete history but no attached query, and such a WFT
443
- // would never really exist. The server wouldn't send a workflow task with nothing to do,
444
- // but they are very useful for testing complete replay.
445
- let saw_final = self
446
- .runs
447
- .get(run_id)
448
- .map(|r| r.have_seen_terminal_event())
449
- .unwrap_or_default();
450
- if !saw_final && matches!(wft_report_status, WFTReportStatus::NotReported) {
451
- return None;
452
- }
453
-
454
- if let Some(rh) = self.runs.get_mut(run_id) {
455
- // Can't mark the WFT complete if there are pending queries, as doing so would destroy
456
- // them.
457
- if rh
458
- .wft()
459
- .map(|wft| !wft.pending_queries.is_empty())
460
- .unwrap_or_default()
461
- {
462
- return None;
463
- }
464
-
465
- rh.mark_wft_complete(wft_report_status)
466
- } else {
467
- None
468
- }
469
- }
470
-
471
- fn buffer_resp_on_full_cache(&mut self, work: PermittedWFT) {
472
- debug!(run_id=%work.work.execution.run_id, "Buffering WFT because cache is full");
473
- // If there's already a buffered poll for the run, replace it.
474
- if let Some(rh) = self
475
- .buffered_polls_need_cache_slot
476
- .iter_mut()
477
- .find(|w| w.work.execution.run_id == work.work.execution.run_id)
478
- {
479
- *rh = work;
480
- } else {
481
- // Otherwise push it to the back
482
- self.buffered_polls_need_cache_slot.push_back(work);
483
- }
484
- }
485
-
486
- /// Makes sure we have enough pending evictions to fulfill the needs of buffered WFTs who are
487
- /// waiting on a cache slot
488
- fn reconcile_buffered(&mut self) -> Vec<ActivationOrAuto> {
489
- // We must ensure that there are at least as many pending evictions as there are tasks
490
- // that we might need to un-buffer (skipping runs which already have buffered tasks for
491
- // themselves)
492
- let num_in_buff = self.buffered_polls_need_cache_slot.len();
493
- let mut evict_these = vec![];
494
- let num_existing_evictions = self
495
- .runs
496
- .runs_lru_order()
497
- .filter(|(_, h)| h.is_trying_to_evict())
498
- .count();
499
- let mut num_evicts_needed = num_in_buff.saturating_sub(num_existing_evictions);
500
- for (rid, handle) in self.runs.runs_lru_order() {
501
- if num_evicts_needed == 0 {
502
- break;
503
- }
504
- if !handle.has_buffered_wft() {
505
- num_evicts_needed -= 1;
506
- evict_these.push(rid.to_string());
507
- }
508
- }
509
- let mut acts = vec![];
510
- for run_id in evict_these {
511
- acts.extend(
512
- self.request_eviction(RequestEvictMsg {
513
- run_id,
514
- message: "Workflow cache full".to_string(),
515
- reason: EvictionReason::CacheFull,
516
- })
517
- .into_run_update_resp(),
518
- );
519
- }
520
- acts
521
- }
522
-
523
- fn shutdown_done(&self) -> bool {
524
- if self.shutdown_token.is_cancelled() {
525
- if Arc::strong_count(&self.history_fetch_refcounter) > 1 {
526
- // Don't exit if there are outstanding fetch requests
527
- return false;
528
- }
529
- let all_runs_ready = self
530
- .runs
531
- .handles()
532
- .all(|r| !r.has_any_pending_work(self.ignore_evicts_on_shutdown, false));
533
- if all_runs_ready {
534
- return true;
535
- }
536
- }
537
- false
538
- }
539
-
540
- fn outstanding_wfts(&self) -> usize {
541
- self.runs.handles().filter(|r| r.wft().is_some()).count()
542
- }
543
-
544
- // Useful when debugging
545
- #[allow(dead_code)]
546
- fn info_dump(&self, run_id: &str) {
547
- if let Some(r) = self.runs.peek(run_id) {
548
- info!(run_id, wft=?r.wft(), activation=?r.activation(),
549
- buffered_wft=r.has_buffered_wft(),
550
- trying_to_evict=r.is_trying_to_evict(), more_work=r.more_pending_work());
551
- } else {
552
- info!(run_id, "Run not found");
553
- }
554
- }
555
- }
556
-
557
- /// All possible inputs to the [WFStream]
558
- #[derive(derive_more::From, Debug)]
559
- #[cfg_attr(
560
- feature = "save_wf_inputs",
561
- derive(serde::Serialize, serde::Deserialize)
562
- )]
563
- enum WFStreamInput {
564
- NewWft(PermittedWFT),
565
- Local(LocalInput),
566
- /// The stream given to us which represents the poller (or a mock) terminated.
567
- PollerDead,
568
- /// The stream given to us which represents the poller (or a mock) encountered a non-retryable
569
- /// error while polling
570
- PollerError(
571
- #[cfg_attr(
572
- feature = "save_wf_inputs",
573
- serde(with = "tonic_status_serde::SerdeStatus")
574
- )]
575
- tonic::Status,
576
- ),
577
- FailedFetch {
578
- run_id: String,
579
- #[cfg_attr(
580
- feature = "save_wf_inputs",
581
- serde(with = "tonic_status_serde::SerdeStatus")
582
- )]
583
- err: tonic::Status,
584
- },
585
- }
586
-
587
- /// A non-poller-received input to the [WFStream]
588
- #[derive(derive_more::DebugCustom)]
589
- #[cfg_attr(
590
- feature = "save_wf_inputs",
591
- derive(serde::Serialize, serde::Deserialize)
592
- )]
593
- #[debug(fmt = "LocalInput {{ {input:?} }}")]
594
- pub(super) struct LocalInput {
595
- pub input: LocalInputs,
596
- #[cfg_attr(feature = "save_wf_inputs", serde(skip, default = "Span::current"))]
597
- pub span: Span,
598
- }
599
- impl From<HeartbeatTimeoutMsg> for LocalInput {
600
- fn from(hb: HeartbeatTimeoutMsg) -> Self {
601
- Self {
602
- input: LocalInputs::HeartbeatTimeout(hb.run_id),
603
- span: hb.span,
604
- }
605
- }
606
- }
607
- /// Everything that _isn't_ a poll which may affect workflow state. Always higher priority than
608
- /// new polls.
609
- #[derive(Debug, derive_more::From)]
610
- #[cfg_attr(
611
- feature = "save_wf_inputs",
612
- derive(serde::Serialize, serde::Deserialize)
613
- )]
614
- pub(super) enum LocalInputs {
615
- Completion(WFActCompleteMsg),
616
- FetchedPageCompletion {
617
- paginator: HistoryPaginator,
618
- update: HistoryUpdate,
619
- },
620
- LocalResolution(LocalResolutionMsg),
621
- PostActivation(PostActivationMsg),
622
- RequestEviction(RequestEvictMsg),
623
- HeartbeatTimeout(String),
624
- #[cfg_attr(feature = "save_wf_inputs", serde(skip))]
625
- GetStateInfo(GetStateInfoMsg),
626
- }
627
- impl LocalInputs {
628
- fn run_id(&self) -> Option<&str> {
629
- Some(match self {
630
- LocalInputs::Completion(c) => c.completion.run_id(),
631
- LocalInputs::FetchedPageCompletion { paginator, .. } => &paginator.run_id,
632
- LocalInputs::LocalResolution(lr) => &lr.run_id,
633
- LocalInputs::PostActivation(pa) => &pa.run_id,
634
- LocalInputs::RequestEviction(re) => &re.run_id,
635
- LocalInputs::HeartbeatTimeout(hb) => hb,
636
- LocalInputs::GetStateInfo(_) => return None,
637
- })
638
- }
639
- }
640
- #[derive(Debug)]
641
- #[allow(clippy::large_enum_variant)] // PollerDead only ever gets used once, so not important.
642
- enum ExternalPollerInputs {
643
- NewWft(PermittedWFT),
644
- PollerDead,
645
- PollerError(tonic::Status),
646
- FetchedUpdate(PermittedWFT),
647
- NextPage {
648
- paginator: HistoryPaginator,
649
- update: HistoryUpdate,
650
- span: Span,
651
- },
652
- FailedFetch {
653
- run_id: String,
654
- err: tonic::Status,
655
- },
656
- }
657
- impl From<ExternalPollerInputs> for WFStreamInput {
658
- fn from(l: ExternalPollerInputs) -> Self {
659
- match l {
660
- ExternalPollerInputs::NewWft(v) => WFStreamInput::NewWft(v),
661
- ExternalPollerInputs::PollerDead => WFStreamInput::PollerDead,
662
- ExternalPollerInputs::PollerError(e) => WFStreamInput::PollerError(e),
663
- ExternalPollerInputs::FetchedUpdate(wft) => WFStreamInput::NewWft(wft),
664
- ExternalPollerInputs::FailedFetch { run_id, err } => {
665
- WFStreamInput::FailedFetch { run_id, err }
666
- }
667
- ExternalPollerInputs::NextPage {
668
- paginator,
669
- update,
670
- span,
671
- } => WFStreamInput::Local(LocalInput {
672
- input: LocalInputs::FetchedPageCompletion { paginator, update },
673
- span,
674
- }),
675
- }
676
- }
677
- }
678
- impl From<Result<WFTExtractorOutput, tonic::Status>> for ExternalPollerInputs {
679
- fn from(v: Result<WFTExtractorOutput, tonic::Status>) -> Self {
680
- match v {
681
- Ok(WFTExtractorOutput::NewWFT(pwft)) => ExternalPollerInputs::NewWft(pwft),
682
- Ok(WFTExtractorOutput::FetchResult(updated_wft, _)) => {
683
- ExternalPollerInputs::FetchedUpdate(updated_wft)
684
- }
685
- Ok(WFTExtractorOutput::NextPage {
686
- paginator,
687
- update,
688
- span,
689
- rc: _rc,
690
- }) => ExternalPollerInputs::NextPage {
691
- paginator,
692
- update,
693
- span,
694
- },
695
- Ok(WFTExtractorOutput::FailedFetch { run_id, err }) => {
696
- ExternalPollerInputs::FailedFetch { run_id, err }
697
- }
698
- Ok(WFTExtractorOutput::PollerDead) => ExternalPollerInputs::PollerDead,
699
- Err(e) => ExternalPollerInputs::PollerError(e),
700
- }
701
- }
702
- }
703
- #[derive(Debug)]
704
- enum NewOrFetchedComplete {
705
- New(WFActCompleteMsg),
706
- Fetched(HistoryUpdate, HistoryPaginator),
707
- }
708
- impl NewOrFetchedComplete {
709
- fn run_id(&self) -> &str {
710
- match self {
711
- NewOrFetchedComplete::New(c) => c.completion.run_id(),
712
- NewOrFetchedComplete::Fetched(_, p) => &p.run_id,
713
- }
714
- }
715
- }