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,677 +0,0 @@
1
- mod activities;
2
- pub(crate) mod client;
3
- mod workflow;
4
-
5
- pub use temporal_sdk_core_api::worker::{WorkerConfig, WorkerConfigBuilder};
6
- #[cfg(feature = "save_wf_inputs")]
7
- pub use workflow::replay_wf_state_inputs;
8
-
9
- pub(crate) use activities::{
10
- ExecutingLAId, LocalActRequest, LocalActivityExecutionResult, LocalActivityResolution,
11
- NewLocalAct,
12
- };
13
- #[cfg(test)]
14
- pub(crate) use workflow::ManagedWFFunc;
15
- pub(crate) use workflow::{wft_poller::new_wft_poller, LEGACY_QUERY_ID};
16
-
17
- use crate::{
18
- errors::CompleteWfError,
19
- pollers::{
20
- new_activity_task_buffer, new_workflow_task_buffer, BoxedActPoller, Poller,
21
- WorkflowTaskPoller,
22
- },
23
- protosext::{validate_activity_completion, ValidPollWFTQResponse},
24
- telemetry::{
25
- metrics::{
26
- activity_poller, local_activity_worker_type, workflow_poller, workflow_sticky_poller,
27
- MetricsContext,
28
- },
29
- TelemetryInstance,
30
- },
31
- worker::{
32
- activities::{DispatchOrTimeoutLA, LACompleteAction, LocalActivityManager},
33
- client::WorkerClient,
34
- workflow::{LAReqSink, LocalResolution, WorkflowBasics, Workflows},
35
- },
36
- ActivityHeartbeat, CompleteActivityError, PollActivityError, PollWfError, WorkerTrait,
37
- };
38
- use activities::{LocalInFlightActInfo, WorkerActivityTasks};
39
- use futures::Stream;
40
- use std::{
41
- convert::TryInto,
42
- future,
43
- sync::{
44
- atomic::{AtomicBool, Ordering},
45
- Arc,
46
- },
47
- };
48
- use temporal_sdk_core_protos::{
49
- coresdk::{
50
- activity_result::activity_execution_result,
51
- activity_task::ActivityTask,
52
- workflow_activation::{remove_from_cache::EvictionReason, WorkflowActivation},
53
- workflow_completion::WorkflowActivationCompletion,
54
- ActivityTaskCompletion,
55
- },
56
- temporal::api::{
57
- enums::v1::TaskQueueKind,
58
- taskqueue::v1::{StickyExecutionAttributes, TaskQueue},
59
- workflowservice::v1::{get_system_info_response, PollActivityTaskQueueResponse},
60
- },
61
- TaskToken,
62
- };
63
- use tokio::sync::mpsc::unbounded_channel;
64
- use tokio_util::sync::CancellationToken;
65
-
66
- /// A worker polls on a certain task queue
67
- pub struct Worker {
68
- config: WorkerConfig,
69
- wf_client: Arc<dyn WorkerClient>,
70
-
71
- /// Manages all workflows and WFT processing
72
- workflows: Workflows,
73
- /// Manages activity tasks for this worker/task queue
74
- at_task_mgr: Option<WorkerActivityTasks>,
75
- /// Manages local activities
76
- local_act_mgr: Arc<LocalActivityManager>,
77
- /// Has shutdown been called?
78
- shutdown_token: CancellationToken,
79
- /// Will be called at the end of each activation completion
80
- #[allow(clippy::type_complexity)] // Sorry clippy, there's no simple way to re-use here.
81
- post_activate_hook: Option<Box<dyn Fn(&Self, &str, usize) + Send + Sync>>,
82
- /// Set when non-local activities are complete and should stop being polled
83
- non_local_activities_complete: Arc<AtomicBool>,
84
- /// Set when local activities are complete and should stop being polled
85
- local_activities_complete: Arc<AtomicBool>,
86
- }
87
-
88
- #[async_trait::async_trait]
89
- impl WorkerTrait for Worker {
90
- async fn poll_workflow_activation(&self) -> Result<WorkflowActivation, PollWfError> {
91
- self.next_workflow_activation().await
92
- }
93
-
94
- #[instrument(skip(self))]
95
- async fn poll_activity_task(&self) -> Result<ActivityTask, PollActivityError> {
96
- loop {
97
- match self.activity_poll().await.transpose() {
98
- Some(r) => break r,
99
- None => {
100
- tokio::task::yield_now().await;
101
- continue;
102
- }
103
- }
104
- }
105
- }
106
-
107
- async fn complete_workflow_activation(
108
- &self,
109
- completion: WorkflowActivationCompletion,
110
- ) -> Result<(), CompleteWfError> {
111
- self.complete_workflow_activation(completion).await
112
- }
113
-
114
- async fn complete_activity_task(
115
- &self,
116
- completion: ActivityTaskCompletion,
117
- ) -> Result<(), CompleteActivityError> {
118
- let task_token = TaskToken(completion.task_token);
119
- let status = if let Some(s) = completion.result.and_then(|r| r.status) {
120
- s
121
- } else {
122
- return Err(CompleteActivityError::MalformedActivityCompletion {
123
- reason: "Activity completion had empty result/status field".to_owned(),
124
- completion: None,
125
- });
126
- };
127
-
128
- self.complete_activity(task_token, status).await
129
- }
130
-
131
- fn record_activity_heartbeat(&self, details: ActivityHeartbeat) {
132
- self.record_heartbeat(details);
133
- }
134
-
135
- fn request_workflow_eviction(&self, run_id: &str) {
136
- self.request_wf_eviction(
137
- run_id,
138
- "Eviction explicitly requested by lang",
139
- EvictionReason::LangRequested,
140
- );
141
- }
142
-
143
- fn get_config(&self) -> &WorkerConfig {
144
- &self.config
145
- }
146
-
147
- /// Begins the shutdown process, tells pollers they should stop. Is idempotent.
148
- fn initiate_shutdown(&self) {
149
- self.shutdown_token.cancel();
150
- // First, we want to stop polling of both activity and workflow tasks
151
- if let Some(atm) = self.at_task_mgr.as_ref() {
152
- atm.notify_shutdown();
153
- }
154
- // Let the manager know that shutdown has been initiated to try to unblock the local activity poll in case this
155
- // worker is an activity-only worker.
156
- self.local_act_mgr.shutdown_initiated();
157
- info!(
158
- task_queue=%self.config.task_queue,
159
- namespace=%self.config.namespace,
160
- "Initiated shutdown",
161
- );
162
- }
163
-
164
- async fn shutdown(&self) {
165
- self.shutdown().await
166
- }
167
-
168
- async fn finalize_shutdown(self) {
169
- self.shutdown().await;
170
- self.finalize_shutdown().await
171
- }
172
- }
173
-
174
- impl Worker {
175
- pub(crate) fn new(
176
- config: WorkerConfig,
177
- sticky_queue_name: Option<String>,
178
- client: Arc<dyn WorkerClient>,
179
- telem_instance: Option<&TelemetryInstance>,
180
- ) -> Self {
181
- info!(task_queue=%config.task_queue,
182
- namespace=%config.namespace,
183
- "Initializing worker");
184
- let metrics = if let Some(ti) = telem_instance {
185
- MetricsContext::top_level(config.namespace.clone(), ti)
186
- .with_task_q(config.task_queue.clone())
187
- } else {
188
- MetricsContext::no_op()
189
- };
190
- metrics.worker_registered();
191
-
192
- let shutdown_token = CancellationToken::new();
193
- let max_nonsticky_polls = if sticky_queue_name.is_some() {
194
- config.max_nonsticky_polls()
195
- } else {
196
- config.max_concurrent_wft_polls
197
- };
198
- let max_sticky_polls = config.max_sticky_polls();
199
- let wft_metrics = metrics.with_new_attrs([workflow_poller()]);
200
- let mut wf_task_poll_buffer = new_workflow_task_buffer(
201
- client.clone(),
202
- config.task_queue.clone(),
203
- false,
204
- max_nonsticky_polls,
205
- max_nonsticky_polls * 2,
206
- shutdown_token.child_token(),
207
- );
208
- wf_task_poll_buffer.set_num_pollers_handler(move |np| wft_metrics.record_num_pollers(np));
209
- let sticky_queue_poller = sticky_queue_name.as_ref().map(|sqn| {
210
- let sticky_metrics = metrics.with_new_attrs([workflow_sticky_poller()]);
211
- let mut sp = new_workflow_task_buffer(
212
- client.clone(),
213
- sqn.clone(),
214
- true,
215
- max_sticky_polls,
216
- max_sticky_polls * 2,
217
- shutdown_token.child_token(),
218
- );
219
- sp.set_num_pollers_handler(move |np| sticky_metrics.record_num_pollers(np));
220
- sp
221
- });
222
- let act_poll_buffer = if config.no_remote_activities {
223
- None
224
- } else {
225
- let mut ap = new_activity_task_buffer(
226
- client.clone(),
227
- config.task_queue.clone(),
228
- config.max_concurrent_at_polls,
229
- config.max_concurrent_at_polls * 2,
230
- config.max_task_queue_activities_per_second,
231
- shutdown_token.child_token(),
232
- );
233
- let act_metrics = metrics.with_new_attrs([activity_poller()]);
234
- ap.set_num_pollers_handler(move |np| act_metrics.record_num_pollers(np));
235
- Some(Box::from(ap)
236
- as Box<
237
- dyn Poller<PollActivityTaskQueueResponse> + Send + Sync,
238
- >)
239
- };
240
- let wf_task_poll_buffer = Box::new(WorkflowTaskPoller::new(
241
- wf_task_poll_buffer,
242
- sticky_queue_poller,
243
- ));
244
- let wft_stream = new_wft_poller(wf_task_poll_buffer, metrics.clone());
245
- Self::new_with_pollers(
246
- config,
247
- sticky_queue_name,
248
- client,
249
- wft_stream,
250
- act_poll_buffer,
251
- metrics,
252
- telem_instance,
253
- shutdown_token,
254
- )
255
- }
256
-
257
- #[cfg(test)]
258
- pub(crate) fn new_test(config: WorkerConfig, client: impl WorkerClient + 'static) -> Self {
259
- Self::new(config, None, Arc::new(client), None)
260
- }
261
-
262
- #[allow(clippy::too_many_arguments)] // Not much worth combining here
263
- pub(crate) fn new_with_pollers(
264
- mut config: WorkerConfig,
265
- sticky_queue_name: Option<String>,
266
- client: Arc<dyn WorkerClient>,
267
- wft_stream: impl Stream<Item = Result<ValidPollWFTQResponse, tonic::Status>> + Send + 'static,
268
- act_poller: Option<BoxedActPoller>,
269
- metrics: MetricsContext,
270
- telem_instance: Option<&TelemetryInstance>,
271
- shutdown_token: CancellationToken,
272
- ) -> Self {
273
- let (hb_tx, hb_rx) = unbounded_channel();
274
- let local_act_mgr = Arc::new(LocalActivityManager::new(
275
- config.max_outstanding_local_activities,
276
- config.namespace.clone(),
277
- hb_tx,
278
- metrics.with_new_attrs([local_activity_worker_type()]),
279
- ));
280
- let at_task_mgr = act_poller.map(|ap| {
281
- WorkerActivityTasks::new(
282
- config.max_outstanding_activities,
283
- config.max_worker_activities_per_second,
284
- ap,
285
- client.clone(),
286
- metrics.clone(),
287
- config.max_heartbeat_throttle_interval,
288
- config.default_heartbeat_throttle_interval,
289
- )
290
- });
291
- let poll_on_non_local_activities = at_task_mgr.is_some();
292
- if !poll_on_non_local_activities {
293
- info!("Activity polling is disabled for this worker");
294
- };
295
- let la_sink = LAReqSink::new(local_act_mgr.clone(), config.wf_state_inputs.clone());
296
- Self {
297
- wf_client: client.clone(),
298
- workflows: Workflows::new(
299
- build_wf_basics(
300
- &mut config,
301
- metrics,
302
- shutdown_token.child_token(),
303
- client.capabilities().cloned().unwrap_or_default(),
304
- ),
305
- sticky_queue_name.map(|sq| StickyExecutionAttributes {
306
- worker_task_queue: Some(TaskQueue {
307
- name: sq,
308
- kind: TaskQueueKind::Sticky as i32,
309
- }),
310
- schedule_to_start_timeout: Some(
311
- config
312
- .sticky_queue_schedule_to_start_timeout
313
- .try_into()
314
- .expect("timeout fits into proto"),
315
- ),
316
- }),
317
- client,
318
- wft_stream,
319
- la_sink,
320
- local_act_mgr.clone(),
321
- hb_rx,
322
- at_task_mgr
323
- .as_ref()
324
- .map(|mgr| mgr.get_handle_for_workflows()),
325
- telem_instance,
326
- ),
327
- at_task_mgr,
328
- local_act_mgr,
329
- config,
330
- shutdown_token,
331
- post_activate_hook: None,
332
- // Complete if there configured not to poll on non-local activities.
333
- non_local_activities_complete: Arc::new(AtomicBool::new(!poll_on_non_local_activities)),
334
- local_activities_complete: Default::default(),
335
- }
336
- }
337
-
338
- /// Will shutdown the worker. Does not resolve until all outstanding workflow tasks have been
339
- /// completed
340
- async fn shutdown(&self) {
341
- self.initiate_shutdown();
342
- // Next we need to wait for all local activities to finish so no more workflow task
343
- // heartbeats will be generated
344
- // Wait for workflows to finish
345
- self.workflows
346
- .shutdown()
347
- .await
348
- .expect("Workflow processing terminates cleanly");
349
- let lam = self.local_act_mgr.clone();
350
- lam.wait_all_outstanding_tasks_finished().await;
351
- // Wait for activities to finish
352
- if let Some(acts) = self.at_task_mgr.as_ref() {
353
- acts.shutdown().await;
354
- }
355
- }
356
-
357
- /// Finish shutting down by consuming the background pollers and freeing all resources
358
- async fn finalize_shutdown(self) {
359
- if let Some(b) = self.at_task_mgr {
360
- b.shutdown().await;
361
- }
362
- }
363
-
364
- pub(crate) fn shutdown_token(&self) -> CancellationToken {
365
- self.shutdown_token.clone()
366
- }
367
-
368
- /// Returns number of currently cached workflows
369
- pub async fn cached_workflows(&self) -> usize {
370
- self.workflows
371
- .get_state_info()
372
- .await
373
- .map(|r| r.cached_workflows)
374
- .unwrap_or_default()
375
- }
376
-
377
- /// Returns number of currently outstanding workflow tasks
378
- #[cfg(test)]
379
- pub(crate) async fn outstanding_workflow_tasks(&self) -> usize {
380
- self.workflows
381
- .get_state_info()
382
- .await
383
- .map(|r| r.outstanding_wft)
384
- .unwrap_or_default()
385
- }
386
-
387
- #[allow(unused)]
388
- pub(crate) async fn available_wft_permits(&self) -> usize {
389
- self.workflows.available_wft_permits()
390
- }
391
-
392
- /// Get new activity tasks (may be local or nonlocal). Local activities are returned first
393
- /// before polling the server if there are any.
394
- ///
395
- /// Returns `Ok(None)` in the event of a poll timeout or if the polling loop should otherwise
396
- /// be restarted
397
- async fn activity_poll(&self) -> Result<Option<ActivityTask>, PollActivityError> {
398
- let local_activities_complete = self.local_activities_complete.load(Ordering::Relaxed);
399
- let non_local_activities_complete =
400
- self.non_local_activities_complete.load(Ordering::Relaxed);
401
- if local_activities_complete && non_local_activities_complete {
402
- return Err(PollActivityError::ShutDown);
403
- }
404
- let act_mgr_poll = async {
405
- if non_local_activities_complete {
406
- future::pending::<()>().await;
407
- unreachable!()
408
- }
409
- if let Some(ref act_mgr) = self.at_task_mgr {
410
- let res = act_mgr.poll().await;
411
- if let Err(err) = res.as_ref() {
412
- if matches!(err, PollActivityError::ShutDown) {
413
- self.non_local_activities_complete
414
- .store(true, Ordering::Relaxed);
415
- return Ok(None);
416
- }
417
- };
418
- res.map(Some)
419
- } else {
420
- // We expect the local activity branch below to produce shutdown when appropriate if
421
- // there are no activity pollers.
422
- future::pending::<()>().await;
423
- unreachable!()
424
- }
425
- };
426
- let local_activities_poll = async {
427
- if local_activities_complete {
428
- future::pending::<()>().await;
429
- unreachable!()
430
- }
431
- match self.local_act_mgr.next_pending().await {
432
- Some(DispatchOrTimeoutLA::Dispatch(r)) => Ok(Some(r)),
433
- Some(DispatchOrTimeoutLA::Timeout {
434
- run_id,
435
- resolution,
436
- task,
437
- }) => {
438
- self.notify_local_result(&run_id, LocalResolution::LocalActivity(resolution));
439
- Ok(task)
440
- }
441
- None => {
442
- if self.shutdown_token.is_cancelled() {
443
- self.local_activities_complete
444
- .store(true, Ordering::Relaxed);
445
- }
446
- Ok(None)
447
- }
448
- }
449
- };
450
-
451
- tokio::select! {
452
- biased;
453
-
454
- r = local_activities_poll => r,
455
- r = act_mgr_poll => r,
456
- }
457
- }
458
-
459
- /// Attempt to record an activity heartbeat
460
- pub(crate) fn record_heartbeat(&self, details: ActivityHeartbeat) {
461
- if let Some(at_mgr) = self.at_task_mgr.as_ref() {
462
- let tt = details.task_token.clone();
463
- if let Err(e) = at_mgr.record_heartbeat(details) {
464
- warn!(task_token = ?tt, details = ?e, "Activity heartbeat failed.");
465
- }
466
- }
467
- }
468
-
469
- #[instrument(skip(self, task_token, status),
470
- fields(task_token=%&task_token, status=%&status,
471
- task_queue=%self.config.task_queue, workflow_id, run_id))]
472
- pub(crate) async fn complete_activity(
473
- &self,
474
- task_token: TaskToken,
475
- status: activity_execution_result::Status,
476
- ) -> Result<(), CompleteActivityError> {
477
- validate_activity_completion(&status)?;
478
- if task_token.is_local_activity_task() {
479
- let as_la_res: LocalActivityExecutionResult = status.try_into()?;
480
- match self.local_act_mgr.complete(&task_token, &as_la_res) {
481
- LACompleteAction::Report(info) => self.complete_local_act(as_la_res, info, None),
482
- LACompleteAction::LangDoesTimerBackoff(backoff, info) => {
483
- // This la needs to write a failure marker, and then we will tell lang how
484
- // long of a timer to schedule to back off for. We do this because there are
485
- // no other situations where core generates "internal" commands so it is much
486
- // simpler for lang to reply with the timer / next LA command than to do it
487
- // internally. Plus, this backoff hack we'd like to eliminate eventually.
488
- self.complete_local_act(as_la_res, info, Some(backoff));
489
- }
490
- LACompleteAction::WillBeRetried => {
491
- // Nothing to do here
492
- }
493
- LACompleteAction::Untracked => {
494
- warn!("Tried to complete untracked local activity {}", task_token);
495
- }
496
- }
497
- return Ok(());
498
- }
499
-
500
- if let Some(atm) = &self.at_task_mgr {
501
- atm.complete(task_token, status, &*self.wf_client).await;
502
- } else {
503
- error!(
504
- "Tried to complete activity {} on a worker that does not have an activity manager",
505
- task_token
506
- );
507
- }
508
- Ok(())
509
- }
510
-
511
- #[instrument(skip(self), fields(run_id, workflow_id, task_queue=%self.config.task_queue))]
512
- pub(crate) async fn next_workflow_activation(&self) -> Result<WorkflowActivation, PollWfError> {
513
- let r = self.workflows.next_workflow_activation().await;
514
- // In the event workflows are shutdown, begin shutdown of everything else, since that's
515
- // about to happen anyway. Tell the local activity manager that, so that it can know to
516
- // cancel any remaining outstanding LAs and shutdown.
517
- if matches!(r, Err(PollWfError::ShutDown)) {
518
- // This is covering the situation where WFT pollers dying is the reason for shutdown
519
- self.initiate_shutdown();
520
- self.local_act_mgr.workflows_have_shutdown();
521
- }
522
- r
523
- }
524
-
525
- #[instrument(skip(self, completion),
526
- fields(completion=%&completion, run_id=%completion.run_id, workflow_id,
527
- task_queue=%self.config.task_queue))]
528
- pub(crate) async fn complete_workflow_activation(
529
- &self,
530
- completion: WorkflowActivationCompletion,
531
- ) -> Result<(), CompleteWfError> {
532
- self.workflows
533
- .activation_completed(
534
- completion,
535
- self.post_activate_hook.as_ref().map(|h| {
536
- |run_id: &str, most_recent_event: usize| h(self, run_id, most_recent_event)
537
- }),
538
- )
539
- .await?;
540
- Ok(())
541
- }
542
-
543
- /// Request a workflow eviction
544
- pub(crate) fn request_wf_eviction(
545
- &self,
546
- run_id: &str,
547
- message: impl Into<String>,
548
- reason: EvictionReason,
549
- ) {
550
- self.workflows.request_eviction(run_id, message, reason);
551
- }
552
-
553
- /// Sets a function to be called at the end of each activation completion
554
- pub(crate) fn set_post_activate_hook(
555
- &mut self,
556
- callback: impl Fn(&Self, &str, usize) + Send + Sync + 'static,
557
- ) {
558
- self.post_activate_hook = Some(Box::new(callback))
559
- }
560
-
561
- fn complete_local_act(
562
- &self,
563
- la_res: LocalActivityExecutionResult,
564
- info: LocalInFlightActInfo,
565
- backoff: Option<prost_types::Duration>,
566
- ) {
567
- self.notify_local_result(
568
- &info.la_info.workflow_exec_info.run_id,
569
- LocalResolution::LocalActivity(LocalActivityResolution {
570
- seq: info.la_info.schedule_cmd.seq,
571
- result: la_res,
572
- runtime: info.dispatch_time.elapsed(),
573
- attempt: info.attempt,
574
- backoff,
575
- original_schedule_time: info.la_info.schedule_cmd.original_schedule_time,
576
- }),
577
- )
578
- }
579
-
580
- fn notify_local_result(&self, run_id: &str, res: LocalResolution) {
581
- self.workflows.notify_of_local_result(run_id, res);
582
- }
583
- }
584
-
585
- fn build_wf_basics(
586
- config: &mut WorkerConfig,
587
- metrics: MetricsContext,
588
- shutdown_token: CancellationToken,
589
- server_capabilities: get_system_info_response::Capabilities,
590
- ) -> WorkflowBasics {
591
- WorkflowBasics {
592
- max_cached_workflows: config.max_cached_workflows,
593
- max_outstanding_wfts: config.max_outstanding_workflow_tasks,
594
- shutdown_token,
595
- metrics,
596
- namespace: config.namespace.clone(),
597
- task_queue: config.task_queue.clone(),
598
- ignore_evicts_on_shutdown: config.ignore_evicts_on_shutdown,
599
- fetching_concurrency: config.fetching_concurrency,
600
- server_capabilities,
601
- #[cfg(feature = "save_wf_inputs")]
602
- wf_state_inputs: config.wf_state_inputs.take(),
603
- }
604
- }
605
-
606
- #[cfg(test)]
607
- mod tests {
608
- use super::*;
609
- use crate::{
610
- advance_fut, test_help::test_worker_cfg, worker::client::mocks::mock_workflow_client,
611
- };
612
- use futures::FutureExt;
613
-
614
- use temporal_sdk_core_protos::temporal::api::workflowservice::v1::PollActivityTaskQueueResponse;
615
-
616
- #[tokio::test]
617
- async fn activity_timeouts_maintain_permit() {
618
- let mut mock_client = mock_workflow_client();
619
- mock_client
620
- .expect_poll_activity_task()
621
- .returning(|_, _| Ok(PollActivityTaskQueueResponse::default()));
622
-
623
- let cfg = test_worker_cfg()
624
- .max_outstanding_activities(5_usize)
625
- .build()
626
- .unwrap();
627
- let worker = Worker::new_test(cfg, mock_client);
628
- let fut = worker.poll_activity_task();
629
- advance_fut!(fut);
630
- assert_eq!(
631
- worker
632
- .at_task_mgr
633
- .as_ref()
634
- .unwrap()
635
- .remaining_activity_capacity(),
636
- 4
637
- );
638
- }
639
-
640
- #[tokio::test]
641
- async fn activity_errs_dont_eat_permits() {
642
- let mut mock_client = mock_workflow_client();
643
- mock_client
644
- .expect_poll_activity_task()
645
- .returning(|_, _| Err(tonic::Status::internal("ahhh")));
646
-
647
- let cfg = test_worker_cfg()
648
- .max_outstanding_activities(5_usize)
649
- .build()
650
- .unwrap();
651
- let worker = Worker::new_test(cfg, mock_client);
652
- assert!(worker.activity_poll().await.is_err());
653
- assert_eq!(worker.at_task_mgr.unwrap().remaining_activity_capacity(), 5);
654
- }
655
-
656
- #[test]
657
- fn max_polls_calculated_properly() {
658
- let mut wcb = WorkerConfigBuilder::default();
659
- let cfg = wcb
660
- .namespace("default")
661
- .task_queue("whatever")
662
- .worker_build_id("test_bin_id")
663
- .max_concurrent_wft_polls(5_usize)
664
- .build()
665
- .unwrap();
666
- assert_eq!(cfg.max_nonsticky_polls(), 1);
667
- assert_eq!(cfg.max_sticky_polls(), 4);
668
- }
669
-
670
- #[test]
671
- fn max_polls_zero_is_err() {
672
- assert!(test_worker_cfg()
673
- .max_concurrent_wft_polls(0_usize)
674
- .build()
675
- .is_err());
676
- }
677
- }