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,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
- }