temporalio 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (585) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +4035 -0
  3. data/Cargo.toml +25 -0
  4. data/Gemfile +20 -0
  5. data/LICENSE +16 -15
  6. data/README.md +455 -195
  7. data/Rakefile +387 -0
  8. data/ext/Cargo.toml +25 -0
  9. data/lib/temporalio/activity/complete_async_error.rb +11 -0
  10. data/lib/temporalio/activity/context.rb +82 -77
  11. data/lib/temporalio/activity/definition.rb +77 -0
  12. data/lib/temporalio/activity/info.rb +42 -46
  13. data/lib/temporalio/activity.rb +49 -65
  14. data/lib/temporalio/api/batch/v1/message.rb +31 -0
  15. data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +93 -0
  16. data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
  17. data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
  18. data/lib/temporalio/api/cloud/identity/v1/message.rb +36 -0
  19. data/lib/temporalio/api/cloud/namespace/v1/message.rb +35 -0
  20. data/lib/temporalio/api/cloud/operation/v1/message.rb +27 -0
  21. data/lib/temporalio/api/cloud/region/v1/message.rb +23 -0
  22. data/lib/temporalio/api/command/v1/message.rb +46 -0
  23. data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
  24. data/lib/temporalio/api/common/v1/message.rb +41 -0
  25. data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
  26. data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
  27. data/lib/temporalio/api/enums/v1/common.rb +26 -0
  28. data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
  29. data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
  30. data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
  31. data/lib/temporalio/api/enums/v1/query.rb +22 -0
  32. data/lib/temporalio/api/enums/v1/reset.rb +23 -0
  33. data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
  34. data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
  35. data/lib/temporalio/api/enums/v1/update.rb +22 -0
  36. data/lib/temporalio/api/enums/v1/workflow.rb +30 -0
  37. data/lib/temporalio/api/errordetails/v1/message.rb +42 -0
  38. data/lib/temporalio/api/export/v1/message.rb +24 -0
  39. data/lib/temporalio/api/failure/v1/message.rb +35 -0
  40. data/lib/temporalio/api/filter/v1/message.rb +27 -0
  41. data/lib/temporalio/api/history/v1/message.rb +90 -0
  42. data/lib/temporalio/api/namespace/v1/message.rb +31 -0
  43. data/lib/temporalio/api/nexus/v1/message.rb +40 -0
  44. data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
  45. data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
  46. data/lib/temporalio/api/operatorservice.rb +3 -0
  47. data/lib/temporalio/api/protocol/v1/message.rb +23 -0
  48. data/lib/temporalio/api/query/v1/message.rb +27 -0
  49. data/lib/temporalio/api/replication/v1/message.rb +26 -0
  50. data/lib/temporalio/api/schedule/v1/message.rb +42 -0
  51. data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
  52. data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
  53. data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
  54. data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
  55. data/lib/temporalio/api/taskqueue/v1/message.rb +45 -0
  56. data/lib/temporalio/api/update/v1/message.rb +33 -0
  57. data/lib/temporalio/api/version/v1/message.rb +26 -0
  58. data/lib/temporalio/api/workflow/v1/message.rb +43 -0
  59. data/lib/temporalio/api/workflowservice/v1/request_response.rb +189 -0
  60. data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
  61. data/lib/temporalio/api/workflowservice.rb +3 -0
  62. data/lib/temporalio/api.rb +13 -0
  63. data/lib/temporalio/cancellation.rb +150 -0
  64. data/lib/temporalio/client/activity_id_reference.rb +32 -0
  65. data/lib/temporalio/client/async_activity_handle.rb +110 -0
  66. data/lib/temporalio/client/connection/cloud_service.rb +648 -0
  67. data/lib/temporalio/client/connection/operator_service.rb +249 -0
  68. data/lib/temporalio/client/connection/service.rb +41 -0
  69. data/lib/temporalio/client/connection/workflow_service.rb +1218 -0
  70. data/lib/temporalio/client/connection.rb +270 -0
  71. data/lib/temporalio/client/interceptor.rb +316 -0
  72. data/lib/temporalio/client/workflow_execution.rb +103 -0
  73. data/lib/temporalio/client/workflow_execution_count.rb +36 -0
  74. data/lib/temporalio/client/workflow_execution_status.rb +18 -0
  75. data/lib/temporalio/client/workflow_handle.rb +380 -177
  76. data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
  77. data/lib/temporalio/client/workflow_update_handle.rb +67 -0
  78. data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
  79. data/lib/temporalio/client.rb +366 -93
  80. data/lib/temporalio/common_enums.rb +24 -0
  81. data/lib/temporalio/converters/data_converter.rb +102 -0
  82. data/lib/temporalio/converters/failure_converter.rb +200 -0
  83. data/lib/temporalio/converters/payload_codec.rb +26 -0
  84. data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
  85. data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
  86. data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
  87. data/lib/temporalio/converters/payload_converter/composite.rb +62 -0
  88. data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
  89. data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
  90. data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
  91. data/lib/temporalio/converters/payload_converter.rb +73 -0
  92. data/lib/temporalio/converters.rb +9 -0
  93. data/lib/temporalio/error/failure.rb +119 -94
  94. data/lib/temporalio/error.rb +147 -0
  95. data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
  96. data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +31 -0
  97. data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
  98. data/lib/temporalio/internal/bridge/api/common/common.rb +26 -0
  99. data/lib/temporalio/internal/bridge/api/core_interface.rb +36 -0
  100. data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
  101. data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +52 -0
  102. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +54 -0
  103. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +30 -0
  104. data/lib/temporalio/internal/bridge/api.rb +3 -0
  105. data/lib/temporalio/internal/bridge/client.rb +90 -0
  106. data/lib/temporalio/internal/bridge/runtime.rb +53 -0
  107. data/lib/temporalio/internal/bridge/testing.rb +46 -0
  108. data/lib/temporalio/internal/bridge/worker.rb +83 -0
  109. data/lib/temporalio/internal/bridge.rb +36 -0
  110. data/lib/temporalio/internal/client/implementation.rb +525 -0
  111. data/lib/temporalio/internal/proto_utils.rb +54 -0
  112. data/lib/temporalio/internal/worker/activity_worker.rb +345 -0
  113. data/lib/temporalio/internal/worker/multi_runner.rb +169 -0
  114. data/lib/temporalio/internal.rb +7 -0
  115. data/lib/temporalio/retry_policy.rb +39 -80
  116. data/lib/temporalio/runtime.rb +259 -13
  117. data/lib/temporalio/scoped_logger.rb +96 -0
  118. data/lib/temporalio/search_attributes.rb +300 -0
  119. data/lib/temporalio/testing/activity_environment.rb +132 -0
  120. data/lib/temporalio/testing/workflow_environment.rb +113 -88
  121. data/lib/temporalio/testing.rb +4 -169
  122. data/lib/temporalio/version.rb +3 -1
  123. data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
  124. data/lib/temporalio/worker/activity_executor/thread_pool.rb +254 -0
  125. data/lib/temporalio/worker/activity_executor.rb +55 -0
  126. data/lib/temporalio/worker/interceptor.rb +88 -0
  127. data/lib/temporalio/worker/tuner.rb +151 -0
  128. data/lib/temporalio/worker.rb +385 -163
  129. data/lib/temporalio/workflow_history.rb +22 -0
  130. data/lib/temporalio.rb +2 -7
  131. data/temporalio.gemspec +20 -39
  132. metadata +131 -712
  133. data/bridge/Cargo.lock +0 -2997
  134. data/bridge/Cargo.toml +0 -29
  135. data/bridge/sdk-core/ARCHITECTURE.md +0 -76
  136. data/bridge/sdk-core/Cargo.toml +0 -2
  137. data/bridge/sdk-core/LICENSE.txt +0 -23
  138. data/bridge/sdk-core/README.md +0 -117
  139. data/bridge/sdk-core/arch_docs/diagrams/README.md +0 -10
  140. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +0 -40
  141. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
  142. data/bridge/sdk-core/arch_docs/sticky_queues.md +0 -51
  143. data/bridge/sdk-core/client/Cargo.toml +0 -40
  144. data/bridge/sdk-core/client/LICENSE.txt +0 -23
  145. data/bridge/sdk-core/client/src/lib.rs +0 -1462
  146. data/bridge/sdk-core/client/src/metrics.rs +0 -174
  147. data/bridge/sdk-core/client/src/raw.rs +0 -932
  148. data/bridge/sdk-core/client/src/retry.rs +0 -763
  149. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +0 -185
  150. data/bridge/sdk-core/core/Cargo.toml +0 -129
  151. data/bridge/sdk-core/core/LICENSE.txt +0 -23
  152. data/bridge/sdk-core/core/benches/workflow_replay.rs +0 -76
  153. data/bridge/sdk-core/core/src/abstractions.rs +0 -355
  154. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +0 -1049
  155. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +0 -221
  156. data/bridge/sdk-core/core/src/core_tests/determinism.rs +0 -270
  157. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +0 -1046
  158. data/bridge/sdk-core/core/src/core_tests/mod.rs +0 -100
  159. data/bridge/sdk-core/core/src/core_tests/queries.rs +0 -893
  160. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +0 -65
  161. data/bridge/sdk-core/core/src/core_tests/workers.rs +0 -257
  162. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +0 -124
  163. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +0 -2433
  164. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +0 -609
  165. data/bridge/sdk-core/core/src/internal_flags.rs +0 -136
  166. data/bridge/sdk-core/core/src/lib.rs +0 -289
  167. data/bridge/sdk-core/core/src/pollers/mod.rs +0 -54
  168. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +0 -297
  169. data/bridge/sdk-core/core/src/protosext/mod.rs +0 -428
  170. data/bridge/sdk-core/core/src/replay/mod.rs +0 -215
  171. data/bridge/sdk-core/core/src/retry_logic.rs +0 -202
  172. data/bridge/sdk-core/core/src/telemetry/log_export.rs +0 -190
  173. data/bridge/sdk-core/core/src/telemetry/metrics.rs +0 -462
  174. data/bridge/sdk-core/core/src/telemetry/mod.rs +0 -423
  175. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +0 -83
  176. data/bridge/sdk-core/core/src/test_help/mod.rs +0 -939
  177. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +0 -536
  178. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +0 -89
  179. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +0 -1278
  180. data/bridge/sdk-core/core/src/worker/activities.rs +0 -557
  181. data/bridge/sdk-core/core/src/worker/client/mocks.rs +0 -107
  182. data/bridge/sdk-core/core/src/worker/client.rs +0 -389
  183. data/bridge/sdk-core/core/src/worker/mod.rs +0 -677
  184. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
  185. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +0 -99
  186. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +0 -1111
  187. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +0 -964
  188. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +0 -294
  189. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -168
  190. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +0 -918
  191. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +0 -137
  192. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +0 -158
  193. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +0 -130
  194. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +0 -1525
  195. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +0 -324
  196. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +0 -179
  197. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -659
  198. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +0 -439
  199. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +0 -435
  200. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +0 -175
  201. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +0 -249
  202. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +0 -85
  203. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +0 -1280
  204. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +0 -269
  205. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -213
  206. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +0 -1305
  207. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +0 -1276
  208. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +0 -128
  209. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +0 -125
  210. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +0 -85
  211. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +0 -117
  212. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +0 -24
  213. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +0 -715
  214. data/bridge/sdk-core/core-api/Cargo.toml +0 -33
  215. data/bridge/sdk-core/core-api/LICENSE.txt +0 -23
  216. data/bridge/sdk-core/core-api/src/errors.rs +0 -62
  217. data/bridge/sdk-core/core-api/src/lib.rs +0 -113
  218. data/bridge/sdk-core/core-api/src/telemetry.rs +0 -141
  219. data/bridge/sdk-core/core-api/src/worker.rs +0 -161
  220. data/bridge/sdk-core/etc/deps.svg +0 -162
  221. data/bridge/sdk-core/etc/dynamic-config.yaml +0 -2
  222. data/bridge/sdk-core/etc/otel-collector-config.yaml +0 -36
  223. data/bridge/sdk-core/etc/prometheus.yaml +0 -6
  224. data/bridge/sdk-core/etc/regen-depgraph.sh +0 -5
  225. data/bridge/sdk-core/fsm/Cargo.toml +0 -18
  226. data/bridge/sdk-core/fsm/LICENSE.txt +0 -23
  227. data/bridge/sdk-core/fsm/README.md +0 -3
  228. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  229. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -23
  230. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +0 -650
  231. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  232. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +0 -18
  233. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  234. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +0 -41
  235. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +0 -14
  236. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +0 -11
  237. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +0 -32
  238. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +0 -31
  239. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +0 -46
  240. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +0 -29
  241. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -12
  242. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +0 -32
  243. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +0 -18
  244. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  245. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +0 -11
  246. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  247. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +0 -11
  248. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  249. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  250. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -23
  251. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +0 -254
  252. data/bridge/sdk-core/fsm/src/lib.rs +0 -2
  253. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  254. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  255. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  256. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  257. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  258. data/bridge/sdk-core/integ-with-otel.sh +0 -7
  259. data/bridge/sdk-core/protos/api_upstream/README.md +0 -9
  260. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
  261. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -9
  262. data/bridge/sdk-core/protos/api_upstream/build/go.mod +0 -7
  263. data/bridge/sdk-core/protos/api_upstream/build/go.sum +0 -5
  264. data/bridge/sdk-core/protos/api_upstream/build/tools.go +0 -29
  265. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +0 -141
  266. data/bridge/sdk-core/protos/api_upstream/go.mod +0 -6
  267. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -89
  268. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +0 -248
  269. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +0 -123
  270. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -47
  271. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -52
  272. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -56
  273. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -170
  274. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -123
  275. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -51
  276. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -50
  277. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -41
  278. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -60
  279. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -59
  280. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -56
  281. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -122
  282. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -108
  283. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -114
  284. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -56
  285. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +0 -787
  286. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -99
  287. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -124
  288. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -80
  289. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -57
  290. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +0 -61
  291. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -55
  292. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -379
  293. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -63
  294. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -108
  295. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +0 -111
  296. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +0 -59
  297. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -146
  298. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -1199
  299. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -415
  300. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +0 -63
  301. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -79
  302. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -80
  303. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -78
  304. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +0 -16
  305. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +0 -31
  306. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -31
  307. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -270
  308. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -305
  309. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -35
  310. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +0 -38
  311. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +0 -13
  312. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
  313. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -63
  314. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -90
  315. data/bridge/sdk-core/rustfmt.toml +0 -1
  316. data/bridge/sdk-core/sdk/Cargo.toml +0 -48
  317. data/bridge/sdk-core/sdk/LICENSE.txt +0 -23
  318. data/bridge/sdk-core/sdk/src/activity_context.rs +0 -230
  319. data/bridge/sdk-core/sdk/src/app_data.rs +0 -37
  320. data/bridge/sdk-core/sdk/src/interceptors.rs +0 -50
  321. data/bridge/sdk-core/sdk/src/lib.rs +0 -861
  322. data/bridge/sdk-core/sdk/src/payload_converter.rs +0 -11
  323. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +0 -295
  324. data/bridge/sdk-core/sdk/src/workflow_context.rs +0 -694
  325. data/bridge/sdk-core/sdk/src/workflow_future.rs +0 -500
  326. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +0 -33
  327. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +0 -23
  328. data/bridge/sdk-core/sdk-core-protos/build.rs +0 -142
  329. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +0 -7
  330. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +0 -557
  331. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +0 -234
  332. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +0 -2088
  333. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +0 -48
  334. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +0 -14
  335. data/bridge/sdk-core/test-utils/Cargo.toml +0 -38
  336. data/bridge/sdk-core/test-utils/src/canned_histories.rs +0 -1389
  337. data/bridge/sdk-core/test-utils/src/histfetch.rs +0 -28
  338. data/bridge/sdk-core/test-utils/src/lib.rs +0 -709
  339. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +0 -50
  340. data/bridge/sdk-core/test-utils/src/workflows.rs +0 -29
  341. data/bridge/sdk-core/tests/fuzzy_workflow.rs +0 -130
  342. data/bridge/sdk-core/tests/heavy_tests.rs +0 -265
  343. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +0 -36
  344. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +0 -150
  345. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +0 -223
  346. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +0 -239
  347. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -90
  348. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +0 -314
  349. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +0 -151
  350. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +0 -902
  351. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
  352. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -60
  353. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -51
  354. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -51
  355. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -64
  356. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -47
  357. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -669
  358. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -54
  359. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -92
  360. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +0 -228
  361. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +0 -94
  362. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -171
  363. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +0 -85
  364. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -120
  365. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +0 -77
  366. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +0 -596
  367. data/bridge/sdk-core/tests/main.rs +0 -103
  368. data/bridge/sdk-core/tests/runner.rs +0 -132
  369. data/bridge/sdk-core/tests/wf_input_replay.rs +0 -32
  370. data/bridge/src/connection.rs +0 -202
  371. data/bridge/src/lib.rs +0 -494
  372. data/bridge/src/runtime.rs +0 -54
  373. data/bridge/src/test_server.rs +0 -153
  374. data/bridge/src/worker.rs +0 -197
  375. data/ext/Rakefile +0 -9
  376. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +0 -14
  377. data/lib/gen/temporal/api/batch/v1/message_pb.rb +0 -50
  378. data/lib/gen/temporal/api/command/v1/message_pb.rb +0 -160
  379. data/lib/gen/temporal/api/common/v1/message_pb.rb +0 -73
  380. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +0 -33
  381. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +0 -37
  382. data/lib/gen/temporal/api/enums/v1/common_pb.rb +0 -42
  383. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +0 -68
  384. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +0 -79
  385. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +0 -37
  386. data/lib/gen/temporal/api/enums/v1/query_pb.rb +0 -31
  387. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +0 -24
  388. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +0 -28
  389. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +0 -30
  390. data/lib/gen/temporal/api/enums/v1/update_pb.rb +0 -25
  391. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +0 -89
  392. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +0 -84
  393. data/lib/gen/temporal/api/failure/v1/message_pb.rb +0 -83
  394. data/lib/gen/temporal/api/filter/v1/message_pb.rb +0 -40
  395. data/lib/gen/temporal/api/history/v1/message_pb.rb +0 -498
  396. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +0 -64
  397. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +0 -88
  398. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +0 -20
  399. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +0 -30
  400. data/lib/gen/temporal/api/query/v1/message_pb.rb +0 -38
  401. data/lib/gen/temporal/api/replication/v1/message_pb.rb +0 -37
  402. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +0 -149
  403. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +0 -23
  404. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +0 -73
  405. data/lib/gen/temporal/api/testservice/v1/request_response_pb.rb +0 -49
  406. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +0 -21
  407. data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -72
  408. data/lib/gen/temporal/api/version/v1/message_pb.rb +0 -41
  409. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +0 -111
  410. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +0 -798
  411. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +0 -20
  412. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +0 -62
  413. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +0 -61
  414. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +0 -61
  415. data/lib/gen/temporal/sdk/core/common/common_pb.rb +0 -26
  416. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +0 -40
  417. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +0 -31
  418. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +0 -171
  419. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +0 -200
  420. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +0 -41
  421. data/lib/temporalio/bridge/connect_options.rb +0 -15
  422. data/lib/temporalio/bridge/error.rb +0 -8
  423. data/lib/temporalio/bridge/retry_config.rb +0 -24
  424. data/lib/temporalio/bridge/tls_options.rb +0 -19
  425. data/lib/temporalio/bridge.rb +0 -14
  426. data/lib/temporalio/client/implementation.rb +0 -340
  427. data/lib/temporalio/connection/retry_config.rb +0 -44
  428. data/lib/temporalio/connection/service.rb +0 -20
  429. data/lib/temporalio/connection/test_service.rb +0 -92
  430. data/lib/temporalio/connection/tls_options.rb +0 -51
  431. data/lib/temporalio/connection/workflow_service.rb +0 -731
  432. data/lib/temporalio/connection.rb +0 -86
  433. data/lib/temporalio/data_converter.rb +0 -191
  434. data/lib/temporalio/error/workflow_failure.rb +0 -19
  435. data/lib/temporalio/errors.rb +0 -40
  436. data/lib/temporalio/failure_converter/base.rb +0 -26
  437. data/lib/temporalio/failure_converter/basic.rb +0 -319
  438. data/lib/temporalio/failure_converter.rb +0 -7
  439. data/lib/temporalio/interceptor/activity_inbound.rb +0 -22
  440. data/lib/temporalio/interceptor/activity_outbound.rb +0 -24
  441. data/lib/temporalio/interceptor/chain.rb +0 -28
  442. data/lib/temporalio/interceptor/client.rb +0 -127
  443. data/lib/temporalio/interceptor.rb +0 -22
  444. data/lib/temporalio/payload_codec/base.rb +0 -32
  445. data/lib/temporalio/payload_converter/base.rb +0 -24
  446. data/lib/temporalio/payload_converter/bytes.rb +0 -27
  447. data/lib/temporalio/payload_converter/composite.rb +0 -49
  448. data/lib/temporalio/payload_converter/encoding_base.rb +0 -35
  449. data/lib/temporalio/payload_converter/json.rb +0 -26
  450. data/lib/temporalio/payload_converter/nil.rb +0 -26
  451. data/lib/temporalio/payload_converter.rb +0 -14
  452. data/lib/temporalio/retry_state.rb +0 -35
  453. data/lib/temporalio/testing/time_skipping_handle.rb +0 -32
  454. data/lib/temporalio/testing/time_skipping_interceptor.rb +0 -23
  455. data/lib/temporalio/timeout_type.rb +0 -29
  456. data/lib/temporalio/worker/activity_runner.rb +0 -114
  457. data/lib/temporalio/worker/activity_worker.rb +0 -164
  458. data/lib/temporalio/worker/reactor.rb +0 -46
  459. data/lib/temporalio/worker/runner.rb +0 -63
  460. data/lib/temporalio/worker/sync_worker.rb +0 -124
  461. data/lib/temporalio/worker/thread_pool_executor.rb +0 -51
  462. data/lib/temporalio/workflow/async.rb +0 -46
  463. data/lib/temporalio/workflow/execution_info.rb +0 -54
  464. data/lib/temporalio/workflow/execution_status.rb +0 -36
  465. data/lib/temporalio/workflow/future.rb +0 -138
  466. data/lib/temporalio/workflow/id_reuse_policy.rb +0 -36
  467. data/lib/temporalio/workflow/info.rb +0 -76
  468. data/lib/temporalio/workflow/query_reject_condition.rb +0 -33
  469. data/lib/thermite_patch.rb +0 -33
  470. data/sig/async.rbs +0 -17
  471. data/sig/protobuf.rbs +0 -16
  472. data/sig/protos/dependencies/gogoproto/gogo.rbs +0 -914
  473. data/sig/protos/google/protobuf/any.rbs +0 -157
  474. data/sig/protos/google/protobuf/descriptor.rbs +0 -2825
  475. data/sig/protos/google/protobuf/duration.rbs +0 -114
  476. data/sig/protos/google/protobuf/empty.rbs +0 -36
  477. data/sig/protos/google/protobuf/timestamp.rbs +0 -145
  478. data/sig/protos/google/protobuf/wrappers.rbs +0 -358
  479. data/sig/protos/temporal/api/batch/v1/message.rbs +0 -300
  480. data/sig/protos/temporal/api/command/v1/message.rbs +0 -1399
  481. data/sig/protos/temporal/api/common/v1/message.rbs +0 -528
  482. data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +0 -79
  483. data/sig/protos/temporal/api/enums/v1/command_type.rbs +0 -68
  484. data/sig/protos/temporal/api/enums/v1/common.rbs +0 -118
  485. data/sig/protos/temporal/api/enums/v1/event_type.rbs +0 -264
  486. data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +0 -277
  487. data/sig/protos/temporal/api/enums/v1/namespace.rbs +0 -108
  488. data/sig/protos/temporal/api/enums/v1/query.rbs +0 -81
  489. data/sig/protos/temporal/api/enums/v1/reset.rbs +0 -44
  490. data/sig/protos/temporal/api/enums/v1/schedule.rbs +0 -72
  491. data/sig/protos/temporal/api/enums/v1/task_queue.rbs +0 -92
  492. data/sig/protos/temporal/api/enums/v1/update.rbs +0 -64
  493. data/sig/protos/temporal/api/enums/v1/workflow.rbs +0 -371
  494. data/sig/protos/temporal/api/errordetails/v1/message.rbs +0 -551
  495. data/sig/protos/temporal/api/failure/v1/message.rbs +0 -581
  496. data/sig/protos/temporal/api/filter/v1/message.rbs +0 -171
  497. data/sig/protos/temporal/api/history/v1/message.rbs +0 -4609
  498. data/sig/protos/temporal/api/namespace/v1/message.rbs +0 -410
  499. data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +0 -643
  500. data/sig/protos/temporal/api/operatorservice/v1/service.rbs +0 -17
  501. data/sig/protos/temporal/api/protocol/v1/message.rbs +0 -84
  502. data/sig/protos/temporal/api/query/v1/message.rbs +0 -182
  503. data/sig/protos/temporal/api/replication/v1/message.rbs +0 -148
  504. data/sig/protos/temporal/api/schedule/v1/message.rbs +0 -1488
  505. data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +0 -110
  506. data/sig/protos/temporal/api/taskqueue/v1/message.rbs +0 -486
  507. data/sig/protos/temporal/api/testservice/v1/request_response.rbs +0 -249
  508. data/sig/protos/temporal/api/testservice/v1/service.rbs +0 -15
  509. data/sig/protos/temporal/api/update/v1/message.rbs +0 -489
  510. data/sig/protos/temporal/api/version/v1/message.rbs +0 -184
  511. data/sig/protos/temporal/api/workflow/v1/message.rbs +0 -824
  512. data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +0 -7250
  513. data/sig/protos/temporal/api/workflowservice/v1/service.rbs +0 -22
  514. data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +0 -380
  515. data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +0 -386
  516. data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +0 -323
  517. data/sig/protos/temporal/sdk/core/common/common.rbs +0 -62
  518. data/sig/protos/temporal/sdk/core/core_interface.rbs +0 -101
  519. data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +0 -119
  520. data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +0 -1473
  521. data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +0 -1784
  522. data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +0 -180
  523. data/sig/ruby.rbs +0 -12
  524. data/sig/temporalio/activity/context.rbs +0 -29
  525. data/sig/temporalio/activity/info.rbs +0 -43
  526. data/sig/temporalio/activity.rbs +0 -19
  527. data/sig/temporalio/bridge/connect_options.rbs +0 -19
  528. data/sig/temporalio/bridge/error.rbs +0 -8
  529. data/sig/temporalio/bridge/retry_config.rbs +0 -21
  530. data/sig/temporalio/bridge/tls_options.rbs +0 -17
  531. data/sig/temporalio/bridge.rbs +0 -71
  532. data/sig/temporalio/client/implementation.rbs +0 -38
  533. data/sig/temporalio/client/workflow_handle.rbs +0 -41
  534. data/sig/temporalio/client.rbs +0 -35
  535. data/sig/temporalio/connection/retry_config.rbs +0 -37
  536. data/sig/temporalio/connection/service.rbs +0 -14
  537. data/sig/temporalio/connection/test_service.rbs +0 -13
  538. data/sig/temporalio/connection/tls_options.rbs +0 -43
  539. data/sig/temporalio/connection/workflow_service.rbs +0 -48
  540. data/sig/temporalio/connection.rbs +0 -30
  541. data/sig/temporalio/data_converter.rbs +0 -35
  542. data/sig/temporalio/error/failure.rbs +0 -121
  543. data/sig/temporalio/error/workflow_failure.rbs +0 -9
  544. data/sig/temporalio/errors.rbs +0 -36
  545. data/sig/temporalio/failure_converter/base.rbs +0 -12
  546. data/sig/temporalio/failure_converter/basic.rbs +0 -86
  547. data/sig/temporalio/failure_converter.rbs +0 -5
  548. data/sig/temporalio/interceptor/activity_inbound.rbs +0 -21
  549. data/sig/temporalio/interceptor/activity_outbound.rbs +0 -10
  550. data/sig/temporalio/interceptor/chain.rbs +0 -24
  551. data/sig/temporalio/interceptor/client.rbs +0 -148
  552. data/sig/temporalio/interceptor.rbs +0 -6
  553. data/sig/temporalio/payload_codec/base.rbs +0 -12
  554. data/sig/temporalio/payload_converter/base.rbs +0 -12
  555. data/sig/temporalio/payload_converter/bytes.rbs +0 -9
  556. data/sig/temporalio/payload_converter/composite.rbs +0 -19
  557. data/sig/temporalio/payload_converter/encoding_base.rbs +0 -14
  558. data/sig/temporalio/payload_converter/json.rbs +0 -9
  559. data/sig/temporalio/payload_converter/nil.rbs +0 -9
  560. data/sig/temporalio/payload_converter.rbs +0 -5
  561. data/sig/temporalio/retry_policy.rbs +0 -25
  562. data/sig/temporalio/retry_state.rbs +0 -20
  563. data/sig/temporalio/runtime.rbs +0 -12
  564. data/sig/temporalio/testing/time_skipping_handle.rbs +0 -15
  565. data/sig/temporalio/testing/time_skipping_interceptor.rbs +0 -13
  566. data/sig/temporalio/testing/workflow_environment.rbs +0 -22
  567. data/sig/temporalio/testing.rbs +0 -35
  568. data/sig/temporalio/timeout_type.rbs +0 -15
  569. data/sig/temporalio/version.rbs +0 -3
  570. data/sig/temporalio/worker/activity_runner.rbs +0 -35
  571. data/sig/temporalio/worker/activity_worker.rbs +0 -44
  572. data/sig/temporalio/worker/reactor.rbs +0 -22
  573. data/sig/temporalio/worker/runner.rbs +0 -21
  574. data/sig/temporalio/worker/sync_worker.rbs +0 -23
  575. data/sig/temporalio/worker/thread_pool_executor.rbs +0 -23
  576. data/sig/temporalio/worker.rbs +0 -46
  577. data/sig/temporalio/workflow/async.rbs +0 -9
  578. data/sig/temporalio/workflow/execution_info.rbs +0 -55
  579. data/sig/temporalio/workflow/execution_status.rbs +0 -21
  580. data/sig/temporalio/workflow/future.rbs +0 -40
  581. data/sig/temporalio/workflow/id_reuse_policy.rbs +0 -15
  582. data/sig/temporalio/workflow/info.rbs +0 -55
  583. data/sig/temporalio/workflow/query_reject_condition.rbs +0 -14
  584. data/sig/temporalio.rbs +0 -2
  585. data/sig/thermite_patch.rbs +0 -15
@@ -1,536 +0,0 @@
1
- use crate::{
2
- worker::{activities::PendingActivityCancel, client::WorkerClient},
3
- TaskToken,
4
- };
5
- use futures::StreamExt;
6
- use std::{
7
- collections::{hash_map::Entry, HashMap},
8
- sync::Arc,
9
- time::{self, Duration, Instant},
10
- };
11
- use temporal_sdk_core_protos::{
12
- coresdk::{activity_task::ActivityCancelReason, ActivityHeartbeat, IntoPayloadsExt},
13
- temporal::api::{
14
- common::v1::Payload, workflowservice::v1::RecordActivityTaskHeartbeatResponse,
15
- },
16
- };
17
- use tokio::{
18
- sync::{
19
- mpsc::{unbounded_channel, UnboundedReceiver, UnboundedSender},
20
- Mutex, Notify,
21
- },
22
- task::JoinHandle,
23
- };
24
- use tokio_util::sync::CancellationToken;
25
-
26
- /// Used to supply new heartbeat events to the activity heartbeat manager, or to send a shutdown
27
- /// request.
28
- pub(crate) struct ActivityHeartbeatManager {
29
- shutdown_token: CancellationToken,
30
- /// Used during `shutdown` to await until all inflight requests are sent.
31
- join_handle: Mutex<Option<JoinHandle<()>>>,
32
- heartbeat_tx: UnboundedSender<HeartbeatAction>,
33
- }
34
-
35
- #[derive(Debug)]
36
- enum HeartbeatAction {
37
- SendHeartbeat(ValidActivityHeartbeat),
38
- Evict {
39
- token: TaskToken,
40
- on_complete: Arc<Notify>,
41
- },
42
- CompleteReport(TaskToken),
43
- CompleteThrottle(TaskToken),
44
- }
45
-
46
- #[derive(Debug)]
47
- pub struct ValidActivityHeartbeat {
48
- pub task_token: TaskToken,
49
- pub details: Vec<Payload>,
50
- pub throttle_interval: time::Duration,
51
- }
52
-
53
- #[derive(Debug)]
54
- enum HeartbeatExecutorAction {
55
- /// Heartbeats are throttled for this task token, sleep until duration or wait to be cancelled
56
- Sleep(TaskToken, Duration, CancellationToken),
57
- /// Report heartbeat to the server
58
- Report {
59
- task_token: TaskToken,
60
- details: Vec<Payload>,
61
- },
62
- }
63
-
64
- /// Errors thrown when heartbeating
65
- #[derive(thiserror::Error, Debug)]
66
- pub enum ActivityHeartbeatError {
67
- /// Heartbeat referenced an activity that we don't think exists. It may have completed already.
68
- #[error("Heartbeat has been sent for activity that either completed or never started on this worker.")]
69
- UnknownActivity,
70
- /// There was a set heartbeat timeout, but it was not parseable. A valid timeout is requried
71
- /// to heartbeat.
72
- #[error("Unable to parse activity heartbeat timeout.")]
73
- InvalidHeartbeatTimeout,
74
- }
75
-
76
- /// Manages activity heartbeating for a worker. Allows sending new heartbeats or requesting and
77
- /// awaiting for the shutdown. When shutdown is requested, signal gets sent to all processors, which
78
- /// allows them to complete gracefully.
79
- impl ActivityHeartbeatManager {
80
- /// Creates a new instance of an activity heartbeat manager and returns a handle to the user,
81
- /// which allows to send new heartbeats and initiate the shutdown.
82
- /// Returns the manager and a channel that buffers cancellation notifications to be sent to Lang.
83
- pub(super) fn new(
84
- client: Arc<dyn WorkerClient>,
85
- ) -> (Self, UnboundedReceiver<PendingActivityCancel>) {
86
- let (heartbeat_stream_state, heartbeat_tx_source, shutdown_token) =
87
- HeartbeatStreamState::new();
88
- let (cancels_tx, cancels_rx) = unbounded_channel();
89
- let heartbeat_tx = heartbeat_tx_source.clone();
90
-
91
- let join_handle = tokio::spawn(
92
- // The stream of incoming heartbeats uses unfold to carry state across each item in the
93
- // stream. The closure checks if, for any given activity, we should heartbeat or not
94
- // depending on its delay and when we last issued a heartbeat for it.
95
- futures::stream::unfold(heartbeat_stream_state, move |mut hb_states| {
96
- async move {
97
- let hb = tokio::select! {
98
- biased;
99
-
100
- _ = hb_states.cancellation_token.cancelled() => {
101
- return None
102
- }
103
- hb = hb_states.incoming_hbs.recv() => match hb {
104
- None => return None,
105
- Some(hb) => hb,
106
- }
107
- };
108
-
109
- Some((
110
- match hb {
111
- HeartbeatAction::SendHeartbeat(hb) => hb_states.record(hb),
112
- HeartbeatAction::CompleteReport(tt) => hb_states.handle_report_completed(tt),
113
- HeartbeatAction::CompleteThrottle(tt) => hb_states.handle_throttle_completed(tt),
114
- HeartbeatAction::Evict{ token, on_complete } => hb_states.evict(token, on_complete),
115
- },
116
- hb_states,
117
- ))
118
- }
119
- })
120
- // Filters out `None`s
121
- .filter_map(|opt| async { opt })
122
- .for_each_concurrent(None, move |action| {
123
- let heartbeat_tx = heartbeat_tx_source.clone();
124
- let sg = client.clone();
125
- let cancels_tx = cancels_tx.clone();
126
- async move {
127
- match action {
128
- HeartbeatExecutorAction::Sleep(tt, duration, cancellation_token) => {
129
- tokio::select! {
130
- _ = cancellation_token.cancelled() => (),
131
- _ = tokio::time::sleep(duration) => {
132
- let _ = heartbeat_tx.send(HeartbeatAction::CompleteThrottle(tt));
133
- },
134
- };
135
- }
136
- HeartbeatExecutorAction::Report { task_token: tt, details } => {
137
- match sg
138
- .record_activity_heartbeat(tt.clone(), details.into_payloads())
139
- .await
140
- {
141
- Ok(RecordActivityTaskHeartbeatResponse { cancel_requested }) => {
142
- if cancel_requested {
143
- cancels_tx
144
- .send(PendingActivityCancel::new(
145
- tt.clone(),
146
- ActivityCancelReason::Cancelled,
147
- ))
148
- .expect(
149
- "Receive half of heartbeat cancels not blocked",
150
- );
151
- }
152
- }
153
- // Send cancels for any activity that learns its workflow already
154
- // finished (which is one thing not found implies - other reasons
155
- // would seem equally valid).
156
- Err(s) if s.code() == tonic::Code::NotFound => {
157
- debug!(task_token = %tt,
158
- "Activity not found when recording heartbeat");
159
- cancels_tx
160
- .send(PendingActivityCancel::new(
161
- tt.clone(),
162
- ActivityCancelReason::NotFound,
163
- ))
164
- .expect("Receive half of heartbeat cancels not blocked");
165
- }
166
- Err(e) => {
167
- warn!("Error when recording heartbeat: {:?}", e);
168
- }
169
- };
170
- let _ = heartbeat_tx.send(HeartbeatAction::CompleteReport(tt));
171
- }
172
- }
173
- }
174
- }),
175
- );
176
-
177
- (
178
- Self {
179
- join_handle: Mutex::new(Some(join_handle)),
180
- shutdown_token,
181
- heartbeat_tx,
182
- },
183
- cancels_rx,
184
- )
185
- }
186
- /// Records a new heartbeat, the first call will result in an immediate call to the server,
187
- /// while rapid successive calls would accumulate for up to `delay` and then latest heartbeat
188
- /// details will be sent to the server.
189
- ///
190
- /// It is important that this function is never called with a task token equal to one given
191
- /// to [Self::evict] after it has been called, doing so will cause a memory leak, as there is
192
- /// no longer an efficient way to forget about that task token.
193
- pub(super) fn record(
194
- &self,
195
- hb: ActivityHeartbeat,
196
- throttle_interval: Duration,
197
- ) -> Result<(), ActivityHeartbeatError> {
198
- self.heartbeat_tx
199
- .send(HeartbeatAction::SendHeartbeat(ValidActivityHeartbeat {
200
- task_token: TaskToken(hb.task_token),
201
- details: hb.details,
202
- throttle_interval,
203
- }))
204
- .expect("Receive half of the heartbeats event channel must not be dropped");
205
-
206
- Ok(())
207
- }
208
-
209
- /// Tell the heartbeat manager we are done forever with a certain task, so it may be forgotten.
210
- /// This will also force-flush the most recently provided details.
211
- /// Record *should* not be called with the same TaskToken after calling this.
212
- pub(super) async fn evict(&self, task_token: TaskToken) {
213
- let completed = Arc::new(Notify::new());
214
- let _ = self.heartbeat_tx.send(HeartbeatAction::Evict {
215
- token: task_token,
216
- on_complete: completed.clone(),
217
- });
218
- completed.notified().await;
219
- }
220
-
221
- /// Initiates shutdown procedure by stopping lifecycle loop and awaiting for all in-flight
222
- /// heartbeat requests to be flushed to the server.
223
- pub(super) async fn shutdown(&self) {
224
- self.shutdown_token.cancel();
225
- let mut handle = self.join_handle.lock().await;
226
- if let Some(h) = handle.take() {
227
- let handle_r = h.await;
228
- if let Err(e) = handle_r {
229
- if !e.is_cancelled() {
230
- error!(
231
- "Unexpected error joining heartbeating tasks during shutdown: {:?}",
232
- e
233
- )
234
- }
235
- }
236
- }
237
- }
238
- }
239
-
240
- #[derive(Debug)]
241
- struct ActivityHeartbeatState {
242
- /// If None and throttle interval is over, untrack this task token
243
- last_recorded_details: Option<Vec<Payload>>,
244
- /// True if we've queued up a request to record against server, but it hasn't yet completed
245
- is_record_in_flight: bool,
246
- last_send_requested: Instant,
247
- throttle_interval: Duration,
248
- throttled_cancellation_token: Option<CancellationToken>,
249
- }
250
-
251
- impl ActivityHeartbeatState {
252
- /// Get duration to sleep by subtracting `throttle_interval` by elapsed time since
253
- /// `last_send_requested`
254
- fn get_throttle_sleep_duration(&self) -> Duration {
255
- let time_since_last_sent = self.last_send_requested.elapsed();
256
-
257
- if time_since_last_sent > Duration::ZERO && self.throttle_interval > time_since_last_sent {
258
- self.throttle_interval - time_since_last_sent
259
- } else {
260
- Duration::ZERO
261
- }
262
- }
263
- }
264
-
265
- #[derive(Debug)]
266
- struct HeartbeatStreamState {
267
- tt_to_state: HashMap<TaskToken, ActivityHeartbeatState>,
268
- tt_needs_flush: HashMap<TaskToken, Arc<Notify>>,
269
- incoming_hbs: UnboundedReceiver<HeartbeatAction>,
270
- /// Token that can be used to cancel the entire stream.
271
- /// Requests to the server are not cancelled with this token.
272
- cancellation_token: CancellationToken,
273
- }
274
-
275
- impl HeartbeatStreamState {
276
- fn new() -> (Self, UnboundedSender<HeartbeatAction>, CancellationToken) {
277
- let (heartbeat_tx, incoming_hbs) = unbounded_channel();
278
- let cancellation_token = CancellationToken::new();
279
- (
280
- Self {
281
- cancellation_token: cancellation_token.clone(),
282
- tt_to_state: Default::default(),
283
- tt_needs_flush: Default::default(),
284
- incoming_hbs,
285
- },
286
- heartbeat_tx,
287
- cancellation_token,
288
- )
289
- }
290
-
291
- /// Record a heartbeat received from lang
292
- fn record(&mut self, hb: ValidActivityHeartbeat) -> Option<HeartbeatExecutorAction> {
293
- match self.tt_to_state.entry(hb.task_token.clone()) {
294
- Entry::Vacant(e) => {
295
- let state = ActivityHeartbeatState {
296
- throttle_interval: hb.throttle_interval,
297
- last_send_requested: Instant::now(),
298
- // Don't record here because we already flush out these details.
299
- // None is used to mark that after throttling we can stop tracking this task
300
- // token.
301
- last_recorded_details: None,
302
- is_record_in_flight: true,
303
- throttled_cancellation_token: None,
304
- };
305
- e.insert(state);
306
- Some(HeartbeatExecutorAction::Report {
307
- task_token: hb.task_token,
308
- details: hb.details,
309
- })
310
- }
311
- Entry::Occupied(mut o) => {
312
- let state = o.get_mut();
313
- state.last_recorded_details = Some(hb.details);
314
- None
315
- }
316
- }
317
- }
318
-
319
- /// Heartbeat report to server completed
320
- fn handle_report_completed(&mut self, tt: TaskToken) -> Option<HeartbeatExecutorAction> {
321
- if let Some(not) = self.tt_needs_flush.remove(&tt) {
322
- not.notify_one();
323
- }
324
- if let Some(st) = self.tt_to_state.get_mut(&tt) {
325
- st.is_record_in_flight = false;
326
- let cancellation_token = self.cancellation_token.child_token();
327
- st.throttled_cancellation_token = Some(cancellation_token.clone());
328
- // Always sleep for simplicity even if the duration is 0
329
- Some(HeartbeatExecutorAction::Sleep(
330
- tt.clone(),
331
- st.get_throttle_sleep_duration(),
332
- cancellation_token,
333
- ))
334
- } else {
335
- None
336
- }
337
- }
338
-
339
- /// Throttling completed, report or stop tracking task token
340
- fn handle_throttle_completed(&mut self, tt: TaskToken) -> Option<HeartbeatExecutorAction> {
341
- match self.tt_to_state.entry(tt.clone()) {
342
- Entry::Occupied(mut e) => {
343
- let state = e.get_mut();
344
- if let Some(details) = state.last_recorded_details.take() {
345
- // Delete the recorded details before reporting
346
- // Reset the cancellation token and schedule another report
347
- state.throttled_cancellation_token = None;
348
- state.last_send_requested = Instant::now();
349
- state.is_record_in_flight = true;
350
- Some(HeartbeatExecutorAction::Report {
351
- task_token: tt,
352
- details,
353
- })
354
- } else {
355
- // Nothing to report, forget this task token
356
- e.remove();
357
- None
358
- }
359
- }
360
- Entry::Vacant(_) => None,
361
- }
362
- }
363
-
364
- /// Activity should not be tracked anymore, cancel throttle timer if running.
365
- ///
366
- /// Will return a report action if there are recorded details present, to ensure we flush the
367
- /// latest details before we cease tracking this activity.
368
- fn evict(
369
- &mut self,
370
- tt: TaskToken,
371
- on_complete: Arc<Notify>,
372
- ) -> Option<HeartbeatExecutorAction> {
373
- if let Some(state) = self.tt_to_state.remove(&tt) {
374
- if let Some(cancel_tok) = state.throttled_cancellation_token {
375
- cancel_tok.cancel();
376
- }
377
- if let Some(last_deets) = state.last_recorded_details {
378
- self.tt_needs_flush.insert(tt.clone(), on_complete);
379
- return Some(HeartbeatExecutorAction::Report {
380
- task_token: tt,
381
- details: last_deets,
382
- });
383
- } else if state.is_record_in_flight {
384
- self.tt_needs_flush.insert(tt, on_complete);
385
- return None;
386
- }
387
- }
388
- // Since there's nothing to flush immediately report back that eviction is finished
389
- on_complete.notify_one();
390
- None
391
- }
392
- }
393
-
394
- #[cfg(test)]
395
- mod test {
396
- use super::*;
397
-
398
- use crate::worker::client::mocks::mock_workflow_client;
399
- use std::time::Duration;
400
- use temporal_sdk_core_protos::temporal::api::{
401
- common::v1::Payload, workflowservice::v1::RecordActivityTaskHeartbeatResponse,
402
- };
403
- use tokio::time::sleep;
404
-
405
- /// Ensure that heartbeats that are sent with a small `throttle_interval` are aggregated and sent roughly once
406
- /// every 1/2 of the heartbeat timeout.
407
- #[tokio::test]
408
- async fn process_heartbeats_and_shutdown() {
409
- let mut mock_client = mock_workflow_client();
410
- mock_client
411
- .expect_record_activity_heartbeat()
412
- .returning(|_, _| Ok(RecordActivityTaskHeartbeatResponse::default()))
413
- .times(2);
414
- let (hm, _) = ActivityHeartbeatManager::new(Arc::new(mock_client));
415
- let fake_task_token = vec![1, 2, 3];
416
- // Send 2 heartbeat requests for 20ms apart.
417
- // The first heartbeat should be sent right away, and
418
- // the second should be throttled until 50ms have passed.
419
- for i in 0_u8..2 {
420
- record_heartbeat(&hm, fake_task_token.clone(), i, Duration::from_millis(50));
421
- sleep(Duration::from_millis(20)).await;
422
- }
423
- // sleep again to let heartbeats be flushed
424
- sleep(Duration::from_millis(20)).await;
425
- hm.shutdown().await;
426
- }
427
-
428
- #[tokio::test]
429
- async fn send_heartbeats_less_frequently_than_throttle_interval() {
430
- let mut mock_client = mock_workflow_client();
431
- mock_client
432
- .expect_record_activity_heartbeat()
433
- .returning(|_, _| Ok(RecordActivityTaskHeartbeatResponse::default()))
434
- .times(3);
435
- let (hm, _) = ActivityHeartbeatManager::new(Arc::new(mock_client));
436
- let fake_task_token = vec![1, 2, 3];
437
- // Heartbeats always get sent if recorded less frequently than the throttle interval
438
- for i in 0_u8..3 {
439
- record_heartbeat(&hm, fake_task_token.clone(), i, Duration::from_millis(10));
440
- sleep(Duration::from_millis(20)).await;
441
- }
442
- hm.shutdown().await;
443
- }
444
-
445
- /// Ensure that heartbeat can be called from a tight loop without any throttle_interval, resulting in two
446
- /// interactions with the server - one immediately and one after 500ms after the throttle_interval.
447
- #[tokio::test]
448
- async fn process_tight_loop_and_shutdown() {
449
- let mut mock_client = mock_workflow_client();
450
- mock_client
451
- .expect_record_activity_heartbeat()
452
- .returning(|_, _| Ok(RecordActivityTaskHeartbeatResponse::default()))
453
- .times(1);
454
- let (hm, _) = ActivityHeartbeatManager::new(Arc::new(mock_client));
455
- let fake_task_token = vec![1, 2, 3];
456
- // Send a whole bunch of heartbeats very fast. We should still only send one total.
457
- for i in 0_u8..50 {
458
- record_heartbeat(&hm, fake_task_token.clone(), i, Duration::from_millis(2000));
459
- // Let it propagate
460
- sleep(Duration::from_millis(10)).await;
461
- }
462
- hm.shutdown().await;
463
- }
464
-
465
- /// This test reports one heartbeat and waits for the throttle_interval to elapse before sending another
466
- #[tokio::test]
467
- async fn report_heartbeat_after_timeout() {
468
- let mut mock_client = mock_workflow_client();
469
- mock_client
470
- .expect_record_activity_heartbeat()
471
- .returning(|_, _| Ok(RecordActivityTaskHeartbeatResponse::default()))
472
- .times(2);
473
- let (hm, _) = ActivityHeartbeatManager::new(Arc::new(mock_client));
474
- let fake_task_token = vec![1, 2, 3];
475
- record_heartbeat(&hm, fake_task_token.clone(), 0, Duration::from_millis(100));
476
- sleep(Duration::from_millis(500)).await;
477
- record_heartbeat(&hm, fake_task_token, 1, Duration::from_millis(100));
478
- // Let it propagate
479
- sleep(Duration::from_millis(50)).await;
480
- hm.shutdown().await;
481
- }
482
-
483
- #[tokio::test]
484
- async fn evict_works() {
485
- let mut mock_client = mock_workflow_client();
486
- mock_client
487
- .expect_record_activity_heartbeat()
488
- .returning(|_, _| Ok(RecordActivityTaskHeartbeatResponse::default()))
489
- .times(2);
490
- let (hm, _) = ActivityHeartbeatManager::new(Arc::new(mock_client));
491
- let fake_task_token = vec![1, 2, 3];
492
- record_heartbeat(&hm, fake_task_token.clone(), 0, Duration::from_millis(100));
493
- // Let it propagate
494
- sleep(Duration::from_millis(10)).await;
495
- hm.evict(fake_task_token.clone().into()).await;
496
- record_heartbeat(&hm, fake_task_token, 0, Duration::from_millis(100));
497
- // Let it propagate
498
- sleep(Duration::from_millis(10)).await;
499
- // We know it works b/c otherwise we would have only called record 1 time w/o sleep
500
- hm.shutdown().await;
501
- }
502
-
503
- #[tokio::test]
504
- async fn evict_immediate_after_record() {
505
- let mut mock_client = mock_workflow_client();
506
- mock_client
507
- .expect_record_activity_heartbeat()
508
- .returning(|_, _| Ok(RecordActivityTaskHeartbeatResponse::default()))
509
- .times(1);
510
- let (hm, _) = ActivityHeartbeatManager::new(Arc::new(mock_client));
511
- let fake_task_token = vec![1, 2, 3];
512
- record_heartbeat(&hm, fake_task_token.clone(), 0, Duration::from_millis(100));
513
- hm.evict(fake_task_token.clone().into()).await;
514
- hm.shutdown().await;
515
- }
516
-
517
- fn record_heartbeat(
518
- hm: &ActivityHeartbeatManager,
519
- task_token: Vec<u8>,
520
- payload_data: u8,
521
- throttle_interval: Duration,
522
- ) {
523
- hm.record(
524
- ActivityHeartbeat {
525
- task_token,
526
- details: vec![Payload {
527
- metadata: Default::default(),
528
- data: vec![payload_data],
529
- }],
530
- },
531
- // Mimic the same delay we would apply in activity task manager
532
- throttle_interval,
533
- )
534
- .expect("hearbeat recording should not fail");
535
- }
536
- }
@@ -1,89 +0,0 @@
1
- use crate::abstractions::MeteredSemaphore;
2
- use crate::worker::activities::PermittedTqResp;
3
- use crate::{pollers::BoxedActPoller, MetricsContext};
4
- use futures::{stream, Stream};
5
- use governor::clock::DefaultClock;
6
- use governor::middleware::NoOpMiddleware;
7
- use governor::state::{InMemoryState, NotKeyed};
8
- use governor::RateLimiter;
9
- use std::sync::Arc;
10
- use temporal_sdk_core_protos::temporal::api::workflowservice::v1::PollActivityTaskQueueResponse;
11
- use tokio::select;
12
- use tokio_util::sync::CancellationToken;
13
-
14
- struct StreamState {
15
- poller: BoxedActPoller,
16
- semaphore: Arc<MeteredSemaphore>,
17
- rate_limiter: Option<RateLimiter<NotKeyed, InMemoryState, DefaultClock, NoOpMiddleware>>,
18
- metrics: MetricsContext,
19
- shutdown_token: CancellationToken,
20
- poller_was_shutdown: bool,
21
- }
22
-
23
- pub(crate) fn new_activity_task_poller(
24
- poller: BoxedActPoller,
25
- semaphore: Arc<MeteredSemaphore>,
26
- rate_limiter: Option<RateLimiter<NotKeyed, InMemoryState, DefaultClock, NoOpMiddleware>>,
27
- metrics: MetricsContext,
28
- shutdown_token: CancellationToken,
29
- ) -> impl Stream<Item = Result<PermittedTqResp, tonic::Status>> {
30
- let state = StreamState {
31
- poller,
32
- semaphore,
33
- rate_limiter,
34
- metrics,
35
- shutdown_token,
36
- poller_was_shutdown: false,
37
- };
38
- stream::unfold(state, |mut state| async move {
39
- loop {
40
- let poll = async {
41
- let permit = state
42
- .semaphore
43
- .acquire_owned()
44
- .await
45
- .expect("outstanding activity semaphore not closed");
46
- if !state.poller_was_shutdown {
47
- if let Some(ref rl) = state.rate_limiter {
48
- rl.until_ready().await;
49
- }
50
- }
51
- loop {
52
- return match state.poller.poll().await {
53
- Some(Ok(resp)) => {
54
- if resp == PollActivityTaskQueueResponse::default() {
55
- // We get the default proto in the event that the long poll times out.
56
- debug!("Poll activity task timeout");
57
- state.metrics.act_poll_timeout();
58
- continue;
59
- }
60
- Some(Ok(PermittedTqResp { permit, resp }))
61
- }
62
- Some(Err(e)) => {
63
- warn!(error=?e, "Error while polling for activity tasks");
64
- Some(Err(e))
65
- }
66
- // If poller returns None, it's dead, thus we also return None to terminate this
67
- // stream.
68
- None => None,
69
- };
70
- }
71
- };
72
- if state.poller_was_shutdown {
73
- return poll.await.map(|res| (res, state));
74
- }
75
- select! {
76
- biased;
77
-
78
- _ = state.shutdown_token.cancelled() => {
79
- state.poller.notify_shutdown();
80
- state.poller_was_shutdown = true;
81
- continue;
82
- }
83
- res = poll => {
84
- return res.map(|res| (res, state));
85
- }
86
- }
87
- }
88
- })
89
- }