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,763 +0,0 @@
1
- use crate::{
2
- ClientOptions, ListClosedFilters, ListOpenFilters, Namespace, RegisterNamespaceOptions, Result,
3
- RetryConfig, SignalWithStartOptions, StartTimeFilter, WorkflowClientTrait, WorkflowOptions,
4
- };
5
- use backoff::{backoff::Backoff, exponential::ExponentialBackoff, Clock, SystemClock};
6
- use futures_retry::{ErrorHandler, FutureRetry, RetryPolicy};
7
- use std::{fmt::Debug, future::Future, sync::Arc, time::Duration};
8
- use temporal_sdk_core_protos::{
9
- coresdk::workflow_commands::QueryResult,
10
- temporal::api::{
11
- common::v1::{Payload, Payloads},
12
- enums::v1::WorkflowTaskFailedCause,
13
- failure::v1::Failure,
14
- query::v1::WorkflowQuery,
15
- workflowservice::v1::*,
16
- },
17
- TaskToken,
18
- };
19
- use tonic::Code;
20
-
21
- /// List of gRPC error codes that client will retry.
22
- pub const RETRYABLE_ERROR_CODES: [Code; 7] = [
23
- Code::DataLoss,
24
- Code::Internal,
25
- Code::Unknown,
26
- Code::ResourceExhausted,
27
- Code::Aborted,
28
- Code::OutOfRange,
29
- Code::Unavailable,
30
- ];
31
- const LONG_POLL_FATAL_GRACE: Duration = Duration::from_secs(60);
32
- /// Must match the method name in [crate::raw::WorkflowService]
33
- const POLL_WORKFLOW_METH_NAME: &str = "poll_workflow_task_queue";
34
- /// Must match the method name in [crate::raw::WorkflowService]
35
- const POLL_ACTIVITY_METH_NAME: &str = "poll_activity_task_queue";
36
-
37
- /// A wrapper for a [WorkflowClientTrait] or [crate::WorkflowService] implementor which performs
38
- /// auto-retries
39
- #[derive(Debug, Clone)]
40
- pub struct RetryClient<SG> {
41
- client: SG,
42
- retry_config: Arc<RetryConfig>,
43
- }
44
-
45
- impl<SG> RetryClient<SG> {
46
- /// Use the provided retry config with the provided client
47
- pub fn new(client: SG, retry_config: RetryConfig) -> Self {
48
- Self {
49
- client,
50
- retry_config: Arc::new(retry_config),
51
- }
52
- }
53
- }
54
-
55
- impl<SG> RetryClient<SG> {
56
- /// Return the inner client type
57
- pub fn get_client(&self) -> &SG {
58
- &self.client
59
- }
60
-
61
- /// Return the inner client type mutably
62
- pub fn get_client_mut(&mut self) -> &mut SG {
63
- &mut self.client
64
- }
65
-
66
- /// Disable retry and return the inner client type
67
- pub fn into_inner(self) -> SG {
68
- self.client
69
- }
70
-
71
- /// Wraps a call to the underlying client with retry capability.
72
- ///
73
- /// This is the "old" path used by higher-level [WorkflowClientTrait] implementors
74
- pub(crate) async fn call_with_retry<R, F, Fut>(
75
- &self,
76
- factory: F,
77
- call_name: &'static str,
78
- ) -> Result<R>
79
- where
80
- F: Fn() -> Fut + Unpin,
81
- Fut: Future<Output = Result<R>>,
82
- {
83
- let rtc = self.get_retry_config(call_name);
84
- let res = Self::make_future_retry(rtc, factory, call_name).await;
85
- Ok(res.map_err(|(e, _attempt)| e)?.0)
86
- }
87
-
88
- pub(crate) fn get_retry_config(&self, call_name: &'static str) -> RetryConfig {
89
- match CallType::from_call_name(call_name) {
90
- CallType::Normal => (*self.retry_config).clone(),
91
- CallType::LongPoll => RetryConfig::poll_retry_policy(),
92
- }
93
- }
94
-
95
- pub(crate) fn make_future_retry<R, F, Fut>(
96
- rtc: RetryConfig,
97
- factory: F,
98
- call_name: &'static str,
99
- ) -> FutureRetry<F, TonicErrorHandler<SystemClock>>
100
- where
101
- F: FnMut() -> Fut + Unpin,
102
- Fut: Future<Output = Result<R>>,
103
- {
104
- FutureRetry::new(
105
- factory,
106
- TonicErrorHandler::new(rtc, RetryConfig::throttle_retry_policy(), call_name),
107
- )
108
- }
109
- }
110
-
111
- #[derive(Debug)]
112
- pub(crate) struct TonicErrorHandler<C: Clock> {
113
- backoff: ExponentialBackoff<C>,
114
- throttle_backoff: ExponentialBackoff<C>,
115
- max_retries: usize,
116
- call_type: CallType,
117
- call_name: &'static str,
118
- }
119
- impl TonicErrorHandler<SystemClock> {
120
- fn new(cfg: RetryConfig, throttle_cfg: RetryConfig, call_name: &'static str) -> Self {
121
- Self::new_with_clock(
122
- cfg,
123
- throttle_cfg,
124
- call_name,
125
- SystemClock::default(),
126
- SystemClock::default(),
127
- )
128
- }
129
- }
130
- impl<C> TonicErrorHandler<C>
131
- where
132
- C: Clock,
133
- {
134
- fn new_with_clock(
135
- cfg: RetryConfig,
136
- throttle_cfg: RetryConfig,
137
- call_name: &'static str,
138
- clock: C,
139
- throttle_clock: C,
140
- ) -> Self {
141
- Self {
142
- max_retries: cfg.max_retries,
143
- call_type: CallType::from_call_name(call_name),
144
- call_name,
145
- backoff: cfg.into_exp_backoff(clock),
146
- throttle_backoff: throttle_cfg.into_exp_backoff(throttle_clock),
147
- }
148
- }
149
- const fn should_log_retry_warning(&self, cur_attempt: usize) -> bool {
150
- // Warn on more than 5 retries for unlimited retrying
151
- if self.max_retries == 0 && cur_attempt > 5 {
152
- return true;
153
- }
154
- // Warn if the attempts are more than 50% of max retries
155
- if self.max_retries > 0 && cur_attempt * 2 >= self.max_retries {
156
- return true;
157
- }
158
- false
159
- }
160
- }
161
- #[doc(hidden)]
162
- #[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
163
- pub enum CallType {
164
- Normal,
165
- LongPoll,
166
- }
167
- impl CallType {
168
- fn from_call_name(call_name: &str) -> Self {
169
- match call_name {
170
- POLL_WORKFLOW_METH_NAME | POLL_ACTIVITY_METH_NAME => CallType::LongPoll,
171
- _ => CallType::Normal,
172
- }
173
- }
174
- }
175
-
176
- impl<C> ErrorHandler<tonic::Status> for TonicErrorHandler<C>
177
- where
178
- C: Clock,
179
- {
180
- type OutError = tonic::Status;
181
-
182
- fn handle(&mut self, current_attempt: usize, e: tonic::Status) -> RetryPolicy<tonic::Status> {
183
- // 0 max retries means unlimited retries
184
- if self.max_retries > 0 && current_attempt >= self.max_retries {
185
- return RetryPolicy::ForwardError(e);
186
- }
187
-
188
- let is_long_poll = self.call_type == CallType::LongPoll;
189
- // Long polls are OK with being cancelled or running into the timeout because there's
190
- // nothing to do but retry anyway
191
- let long_poll_allowed =
192
- is_long_poll && [Code::Cancelled, Code::DeadlineExceeded].contains(&e.code());
193
-
194
- if RETRYABLE_ERROR_CODES.contains(&e.code()) || long_poll_allowed {
195
- if current_attempt == 1 {
196
- debug!(error=?e, "gRPC call {} failed on first attempt", self.call_name);
197
- } else if self.should_log_retry_warning(current_attempt) {
198
- warn!(error=?e, "gRPC call {} retried {} times", self.call_name, current_attempt);
199
- }
200
-
201
- match self.backoff.next_backoff() {
202
- None => RetryPolicy::ForwardError(e), // None is returned when we've ran out of time
203
- Some(backoff) => {
204
- // We treat ResourceExhausted as a special case and backoff more
205
- // so we don't overload the server
206
- if e.code() == Code::ResourceExhausted {
207
- let extended_backoff =
208
- backoff.max(self.throttle_backoff.next_backoff().unwrap_or_default());
209
- RetryPolicy::WaitRetry(extended_backoff)
210
- } else {
211
- RetryPolicy::WaitRetry(backoff)
212
- }
213
- }
214
- }
215
- } else if is_long_poll && self.backoff.get_elapsed_time() <= LONG_POLL_FATAL_GRACE {
216
- // We permit "fatal" errors while long polling for a while, because some proxies return
217
- // stupid error codes while getting ready, among other weird infra issues
218
- RetryPolicy::WaitRetry(self.backoff.max_interval)
219
- } else {
220
- RetryPolicy::ForwardError(e)
221
- }
222
- }
223
- }
224
-
225
- macro_rules! retry_call {
226
- ($myself:ident, $call_name:ident) => { retry_call!($myself, $call_name,) };
227
- ($myself:ident, $call_name:ident, $($args:expr),*) => {{
228
- let call_name_str = stringify!($call_name);
229
- let fact = || { $myself.get_client().$call_name($($args,)*)};
230
- $myself.call_with_retry(fact, call_name_str).await
231
- }}
232
- }
233
-
234
- // Ideally, this would be auto-implemented for anything that implements the raw client, but that
235
- // breaks all our retry clients which use a mock since it's based on this trait currently. Ideally
236
- // we would create an automock for the WorkflowServiceClient copy-paste trait and use that, but
237
- // that's a huge pain. Maybe one day tonic will provide traits.
238
- #[async_trait::async_trait]
239
- impl<SG> WorkflowClientTrait for RetryClient<SG>
240
- where
241
- SG: WorkflowClientTrait + Send + Sync + 'static,
242
- {
243
- async fn start_workflow(
244
- &self,
245
- input: Vec<Payload>,
246
- task_queue: String,
247
- workflow_id: String,
248
- workflow_type: String,
249
- request_id: Option<String>,
250
- options: WorkflowOptions,
251
- ) -> Result<StartWorkflowExecutionResponse> {
252
- retry_call!(
253
- self,
254
- start_workflow,
255
- input.clone(),
256
- task_queue.clone(),
257
- workflow_id.clone(),
258
- workflow_type.clone(),
259
- request_id.clone(),
260
- options.clone()
261
- )
262
- }
263
-
264
- async fn reset_sticky_task_queue(
265
- &self,
266
- workflow_id: String,
267
- run_id: String,
268
- ) -> Result<ResetStickyTaskQueueResponse> {
269
- retry_call!(
270
- self,
271
- reset_sticky_task_queue,
272
- workflow_id.clone(),
273
- run_id.clone()
274
- )
275
- }
276
-
277
- async fn complete_activity_task(
278
- &self,
279
- task_token: TaskToken,
280
- result: Option<Payloads>,
281
- ) -> Result<RespondActivityTaskCompletedResponse> {
282
- retry_call!(
283
- self,
284
- complete_activity_task,
285
- task_token.clone(),
286
- result.clone()
287
- )
288
- }
289
-
290
- async fn record_activity_heartbeat(
291
- &self,
292
- task_token: TaskToken,
293
- details: Option<Payloads>,
294
- ) -> Result<RecordActivityTaskHeartbeatResponse> {
295
- retry_call!(
296
- self,
297
- record_activity_heartbeat,
298
- task_token.clone(),
299
- details.clone()
300
- )
301
- }
302
-
303
- async fn cancel_activity_task(
304
- &self,
305
- task_token: TaskToken,
306
- details: Option<Payloads>,
307
- ) -> Result<RespondActivityTaskCanceledResponse> {
308
- retry_call!(
309
- self,
310
- cancel_activity_task,
311
- task_token.clone(),
312
- details.clone()
313
- )
314
- }
315
-
316
- async fn fail_activity_task(
317
- &self,
318
- task_token: TaskToken,
319
- failure: Option<Failure>,
320
- ) -> Result<RespondActivityTaskFailedResponse> {
321
- retry_call!(
322
- self,
323
- fail_activity_task,
324
- task_token.clone(),
325
- failure.clone()
326
- )
327
- }
328
-
329
- async fn fail_workflow_task(
330
- &self,
331
- task_token: TaskToken,
332
- cause: WorkflowTaskFailedCause,
333
- failure: Option<Failure>,
334
- ) -> Result<RespondWorkflowTaskFailedResponse> {
335
- retry_call!(
336
- self,
337
- fail_workflow_task,
338
- task_token.clone(),
339
- cause,
340
- failure.clone()
341
- )
342
- }
343
-
344
- async fn signal_workflow_execution(
345
- &self,
346
- workflow_id: String,
347
- run_id: String,
348
- signal_name: String,
349
- payloads: Option<Payloads>,
350
- request_id: Option<String>,
351
- ) -> Result<SignalWorkflowExecutionResponse> {
352
- retry_call!(
353
- self,
354
- signal_workflow_execution,
355
- workflow_id.clone(),
356
- run_id.clone(),
357
- signal_name.clone(),
358
- payloads.clone(),
359
- request_id.clone()
360
- )
361
- }
362
-
363
- async fn signal_with_start_workflow_execution(
364
- &self,
365
- options: SignalWithStartOptions,
366
- workflow_options: WorkflowOptions,
367
- ) -> Result<SignalWithStartWorkflowExecutionResponse> {
368
- retry_call!(
369
- self,
370
- signal_with_start_workflow_execution,
371
- options.clone(),
372
- workflow_options.clone()
373
- )
374
- }
375
-
376
- async fn query_workflow_execution(
377
- &self,
378
- workflow_id: String,
379
- run_id: String,
380
- query: WorkflowQuery,
381
- ) -> Result<QueryWorkflowResponse> {
382
- retry_call!(
383
- self,
384
- query_workflow_execution,
385
- workflow_id.clone(),
386
- run_id.clone(),
387
- query.clone()
388
- )
389
- }
390
-
391
- async fn describe_workflow_execution(
392
- &self,
393
- workflow_id: String,
394
- run_id: Option<String>,
395
- ) -> Result<DescribeWorkflowExecutionResponse> {
396
- retry_call!(
397
- self,
398
- describe_workflow_execution,
399
- workflow_id.clone(),
400
- run_id.clone()
401
- )
402
- }
403
-
404
- async fn get_workflow_execution_history(
405
- &self,
406
- workflow_id: String,
407
- run_id: Option<String>,
408
- page_token: Vec<u8>,
409
- ) -> Result<GetWorkflowExecutionHistoryResponse> {
410
- retry_call!(
411
- self,
412
- get_workflow_execution_history,
413
- workflow_id.clone(),
414
- run_id.clone(),
415
- page_token.clone()
416
- )
417
- }
418
-
419
- async fn respond_legacy_query(
420
- &self,
421
- task_token: TaskToken,
422
- query_result: QueryResult,
423
- ) -> Result<RespondQueryTaskCompletedResponse> {
424
- retry_call!(
425
- self,
426
- respond_legacy_query,
427
- task_token.clone(),
428
- query_result.clone()
429
- )
430
- }
431
-
432
- async fn cancel_workflow_execution(
433
- &self,
434
- workflow_id: String,
435
- run_id: Option<String>,
436
- reason: String,
437
- request_id: Option<String>,
438
- ) -> Result<RequestCancelWorkflowExecutionResponse> {
439
- retry_call!(
440
- self,
441
- cancel_workflow_execution,
442
- workflow_id.clone(),
443
- run_id.clone(),
444
- reason.clone(),
445
- request_id.clone()
446
- )
447
- }
448
-
449
- async fn terminate_workflow_execution(
450
- &self,
451
- workflow_id: String,
452
- run_id: Option<String>,
453
- ) -> Result<TerminateWorkflowExecutionResponse> {
454
- retry_call!(
455
- self,
456
- terminate_workflow_execution,
457
- workflow_id.clone(),
458
- run_id.clone()
459
- )
460
- }
461
-
462
- async fn register_namespace(
463
- &self,
464
- options: RegisterNamespaceOptions,
465
- ) -> Result<RegisterNamespaceResponse> {
466
- retry_call!(self, register_namespace, options.clone())
467
- }
468
-
469
- async fn list_namespaces(&self) -> Result<ListNamespacesResponse> {
470
- retry_call!(self, list_namespaces,)
471
- }
472
-
473
- async fn describe_namespace(&self, namespace: Namespace) -> Result<DescribeNamespaceResponse> {
474
- retry_call!(self, describe_namespace, namespace.clone())
475
- }
476
-
477
- async fn list_open_workflow_executions(
478
- &self,
479
- maximum_page_size: i32,
480
- next_page_token: Vec<u8>,
481
- start_time_filter: Option<StartTimeFilter>,
482
- filters: Option<ListOpenFilters>,
483
- ) -> Result<ListOpenWorkflowExecutionsResponse> {
484
- retry_call!(
485
- self,
486
- list_open_workflow_executions,
487
- maximum_page_size,
488
- next_page_token.clone(),
489
- start_time_filter.clone(),
490
- filters.clone()
491
- )
492
- }
493
-
494
- async fn list_closed_workflow_executions(
495
- &self,
496
- maximum_page_size: i32,
497
- next_page_token: Vec<u8>,
498
- start_time_filter: Option<StartTimeFilter>,
499
- filters: Option<ListClosedFilters>,
500
- ) -> Result<ListClosedWorkflowExecutionsResponse> {
501
- retry_call!(
502
- self,
503
- list_closed_workflow_executions,
504
- maximum_page_size,
505
- next_page_token.clone(),
506
- start_time_filter.clone(),
507
- filters.clone()
508
- )
509
- }
510
-
511
- async fn list_workflow_executions(
512
- &self,
513
- page_size: i32,
514
- next_page_token: Vec<u8>,
515
- query: String,
516
- ) -> Result<ListWorkflowExecutionsResponse> {
517
- retry_call!(
518
- self,
519
- list_workflow_executions,
520
- page_size,
521
- next_page_token.clone(),
522
- query.clone()
523
- )
524
- }
525
-
526
- async fn list_archived_workflow_executions(
527
- &self,
528
- page_size: i32,
529
- next_page_token: Vec<u8>,
530
- query: String,
531
- ) -> Result<ListArchivedWorkflowExecutionsResponse> {
532
- retry_call!(
533
- self,
534
- list_archived_workflow_executions,
535
- page_size,
536
- next_page_token.clone(),
537
- query.clone()
538
- )
539
- }
540
-
541
- async fn get_search_attributes(&self) -> Result<GetSearchAttributesResponse> {
542
- retry_call!(self, get_search_attributes)
543
- }
544
-
545
- fn get_options(&self) -> &ClientOptions {
546
- self.client.get_options()
547
- }
548
-
549
- fn namespace(&self) -> &str {
550
- self.client.namespace()
551
- }
552
- }
553
-
554
- #[cfg(test)]
555
- mod tests {
556
- use super::*;
557
- use crate::MockWorkflowClientTrait;
558
- use assert_matches::assert_matches;
559
- use backoff::Clock;
560
- use std::{ops::Add, time::Instant};
561
- use tonic::Status;
562
-
563
- /// Predefined retry configs with low durations to make unit tests faster
564
- const TEST_RETRY_CONFIG: RetryConfig = RetryConfig {
565
- initial_interval: Duration::from_millis(1),
566
- randomization_factor: 0.0,
567
- multiplier: 1.1,
568
- max_interval: Duration::from_millis(2),
569
- max_elapsed_time: None,
570
- max_retries: 10,
571
- };
572
-
573
- #[tokio::test]
574
- async fn non_retryable_errors() {
575
- for code in [
576
- Code::InvalidArgument,
577
- Code::NotFound,
578
- Code::AlreadyExists,
579
- Code::PermissionDenied,
580
- Code::FailedPrecondition,
581
- Code::Cancelled,
582
- Code::DeadlineExceeded,
583
- Code::Unauthenticated,
584
- Code::Unimplemented,
585
- ] {
586
- let mut mock_client = MockWorkflowClientTrait::new();
587
- mock_client
588
- .expect_cancel_activity_task()
589
- .returning(move |_, _| Err(Status::new(code, "non-retryable failure")))
590
- .times(1);
591
- let retry_client = RetryClient::new(mock_client, TEST_RETRY_CONFIG);
592
- let result = retry_client
593
- .cancel_activity_task(vec![1].into(), None)
594
- .await;
595
- // Expecting an error after a single attempt, since there was a non-retryable error.
596
- assert!(result.is_err());
597
- }
598
- }
599
-
600
- struct FixedClock(Instant);
601
- impl Clock for FixedClock {
602
- fn now(&self) -> Instant {
603
- self.0
604
- }
605
- }
606
-
607
- #[tokio::test]
608
- async fn long_poll_non_retryable_errors() {
609
- for code in [
610
- Code::InvalidArgument,
611
- Code::NotFound,
612
- Code::AlreadyExists,
613
- Code::PermissionDenied,
614
- Code::FailedPrecondition,
615
- Code::Unauthenticated,
616
- Code::Unimplemented,
617
- ] {
618
- for call_name in [POLL_WORKFLOW_METH_NAME, POLL_ACTIVITY_METH_NAME] {
619
- let mut err_handler = TonicErrorHandler {
620
- max_retries: TEST_RETRY_CONFIG.max_retries,
621
- call_type: CallType::LongPoll,
622
- call_name,
623
- backoff: TEST_RETRY_CONFIG.into_exp_backoff(FixedClock(Instant::now())),
624
- throttle_backoff: TEST_RETRY_CONFIG
625
- .into_exp_backoff(FixedClock(Instant::now())),
626
- };
627
- let result = err_handler.handle(1, Status::new(code, "Ahh"));
628
- assert_matches!(result, RetryPolicy::WaitRetry(_));
629
- err_handler.backoff.clock.0 = err_handler
630
- .backoff
631
- .clock
632
- .0
633
- .add(LONG_POLL_FATAL_GRACE + Duration::from_secs(1));
634
- let result = err_handler.handle(2, Status::new(code, "Ahh"));
635
- assert_matches!(result, RetryPolicy::ForwardError(_));
636
- }
637
- }
638
- }
639
-
640
- #[tokio::test]
641
- async fn long_poll_retryable_errors_never_fatal() {
642
- for code in RETRYABLE_ERROR_CODES {
643
- for call_name in [POLL_WORKFLOW_METH_NAME, POLL_ACTIVITY_METH_NAME] {
644
- let mut err_handler = TonicErrorHandler {
645
- max_retries: TEST_RETRY_CONFIG.max_retries,
646
- call_type: CallType::LongPoll,
647
- call_name,
648
- backoff: TEST_RETRY_CONFIG.into_exp_backoff(FixedClock(Instant::now())),
649
- throttle_backoff: TEST_RETRY_CONFIG
650
- .into_exp_backoff(FixedClock(Instant::now())),
651
- };
652
- let result = err_handler.handle(1, Status::new(code, "Ahh"));
653
- assert_matches!(result, RetryPolicy::WaitRetry(_));
654
- err_handler.backoff.clock.0 = err_handler
655
- .backoff
656
- .clock
657
- .0
658
- .add(LONG_POLL_FATAL_GRACE + Duration::from_secs(1));
659
- let result = err_handler.handle(2, Status::new(code, "Ahh"));
660
- assert_matches!(result, RetryPolicy::WaitRetry(_));
661
- }
662
- }
663
- }
664
-
665
- #[tokio::test]
666
- async fn retryable_errors() {
667
- // Take out retry exhausted since it gets a special policy which would make this take ages
668
- for code in RETRYABLE_ERROR_CODES
669
- .iter()
670
- .copied()
671
- .filter(|p| p != &Code::ResourceExhausted)
672
- {
673
- let mut mock_client = MockWorkflowClientTrait::new();
674
- mock_client
675
- .expect_cancel_activity_task()
676
- .returning(move |_, _| Err(Status::new(code, "retryable failure")))
677
- .times(3);
678
- mock_client
679
- .expect_cancel_activity_task()
680
- .returning(|_, _| Ok(Default::default()))
681
- .times(1);
682
-
683
- let retry_client = RetryClient::new(mock_client, TEST_RETRY_CONFIG);
684
- let result = retry_client
685
- .cancel_activity_task(vec![1].into(), None)
686
- .await;
687
- // Expecting successful response after retries
688
- assert!(result.is_ok());
689
- }
690
- }
691
-
692
- #[tokio::test]
693
- async fn retry_resource_exhausted() {
694
- let mut err_handler = TonicErrorHandler {
695
- max_retries: TEST_RETRY_CONFIG.max_retries,
696
- call_type: CallType::Normal,
697
- call_name: POLL_WORKFLOW_METH_NAME,
698
- backoff: TEST_RETRY_CONFIG.into_exp_backoff(FixedClock(Instant::now())),
699
- throttle_backoff: RetryConfig {
700
- initial_interval: Duration::from_millis(2),
701
- randomization_factor: 0.0,
702
- multiplier: 4.0,
703
- max_interval: Duration::from_millis(10),
704
- max_elapsed_time: None,
705
- max_retries: 10,
706
- }
707
- .into_exp_backoff(FixedClock(Instant::now())),
708
- };
709
- let result = err_handler.handle(1, Status::new(Code::ResourceExhausted, "leave me alone"));
710
- match result {
711
- RetryPolicy::WaitRetry(duration) => assert_eq!(duration, Duration::from_millis(2)),
712
- _ => panic!(),
713
- }
714
- err_handler.backoff.clock.0 = err_handler.backoff.clock.0.add(Duration::from_millis(10));
715
- err_handler.throttle_backoff.clock.0 = err_handler
716
- .throttle_backoff
717
- .clock
718
- .0
719
- .add(Duration::from_millis(10));
720
- let result = err_handler.handle(2, Status::new(Code::ResourceExhausted, "leave me alone"));
721
- match result {
722
- RetryPolicy::WaitRetry(duration) => assert_eq!(duration, Duration::from_millis(8)),
723
- _ => panic!(),
724
- }
725
- }
726
-
727
- #[tokio::test]
728
- async fn long_poll_retries_forever() {
729
- // A bit odd, but we don't need a real client to test the retry client passes through the
730
- // correct retry config
731
- let fake_retry = RetryClient::new((), TEST_RETRY_CONFIG);
732
- for i in 1..=50 {
733
- for call in [POLL_WORKFLOW_METH_NAME, POLL_ACTIVITY_METH_NAME] {
734
- let mut err_handler = TonicErrorHandler::new(
735
- fake_retry.get_retry_config(call),
736
- fake_retry.get_retry_config(call),
737
- call,
738
- );
739
- let result = err_handler.handle(i, Status::new(Code::Unknown, "Ahh"));
740
- assert_matches!(result, RetryPolicy::WaitRetry(_));
741
- }
742
- }
743
- }
744
-
745
- #[tokio::test]
746
- async fn long_poll_retries_deadline_exceeded() {
747
- let fake_retry = RetryClient::new((), TEST_RETRY_CONFIG);
748
- // For some reason we will get cancelled in these situations occasionally (always?) too
749
- for code in [Code::Cancelled, Code::DeadlineExceeded] {
750
- for call in [POLL_WORKFLOW_METH_NAME, POLL_ACTIVITY_METH_NAME] {
751
- let mut err_handler = TonicErrorHandler::new(
752
- fake_retry.get_retry_config(call),
753
- fake_retry.get_retry_config(call),
754
- call,
755
- );
756
- for i in 1..=5 {
757
- let result = err_handler.handle(i, Status::new(code, "retryable failure"));
758
- assert_matches!(result, RetryPolicy::WaitRetry(_));
759
- }
760
- }
761
- }
762
- }
763
- }