temporalio 0.1.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (628) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -0
  3. data/Cargo.lock +4324 -0
  4. data/Cargo.toml +25 -0
  5. data/Gemfile +20 -0
  6. data/LICENSE +16 -15
  7. data/README.md +985 -183
  8. data/Rakefile +101 -0
  9. data/ext/Cargo.toml +26 -0
  10. data/lib/temporalio/activity/complete_async_error.rb +11 -0
  11. data/lib/temporalio/activity/context.rb +86 -78
  12. data/lib/temporalio/activity/definition.rb +175 -0
  13. data/lib/temporalio/activity/info.rb +44 -47
  14. data/lib/temporalio/activity.rb +8 -81
  15. data/lib/temporalio/api/activity/v1/message.rb +25 -0
  16. data/lib/temporalio/api/batch/v1/message.rb +31 -0
  17. data/lib/temporalio/api/cloud/account/v1/message.rb +28 -0
  18. data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +126 -0
  19. data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
  20. data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
  21. data/lib/temporalio/api/cloud/identity/v1/message.rb +41 -0
  22. data/lib/temporalio/api/cloud/namespace/v1/message.rb +42 -0
  23. data/lib/temporalio/api/cloud/nexus/v1/message.rb +31 -0
  24. data/lib/temporalio/api/cloud/operation/v1/message.rb +28 -0
  25. data/lib/temporalio/api/cloud/region/v1/message.rb +24 -0
  26. data/lib/temporalio/api/cloud/resource/v1/message.rb +23 -0
  27. data/lib/temporalio/api/cloud/sink/v1/message.rb +24 -0
  28. data/lib/temporalio/api/cloud/usage/v1/message.rb +31 -0
  29. data/lib/temporalio/api/command/v1/message.rb +46 -0
  30. data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
  31. data/lib/temporalio/api/common/v1/message.rb +47 -0
  32. data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
  33. data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
  34. data/lib/temporalio/api/enums/v1/common.rb +26 -0
  35. data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
  36. data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
  37. data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
  38. data/lib/temporalio/api/enums/v1/query.rb +22 -0
  39. data/lib/temporalio/api/enums/v1/reset.rb +23 -0
  40. data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
  41. data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
  42. data/lib/temporalio/api/enums/v1/update.rb +22 -0
  43. data/lib/temporalio/api/enums/v1/workflow.rb +30 -0
  44. data/lib/temporalio/api/errordetails/v1/message.rb +42 -0
  45. data/lib/temporalio/api/export/v1/message.rb +24 -0
  46. data/lib/temporalio/api/failure/v1/message.rb +35 -0
  47. data/lib/temporalio/api/filter/v1/message.rb +27 -0
  48. data/lib/temporalio/api/history/v1/message.rb +90 -0
  49. data/lib/temporalio/api/namespace/v1/message.rb +31 -0
  50. data/lib/temporalio/api/nexus/v1/message.rb +40 -0
  51. data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
  52. data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
  53. data/lib/temporalio/api/operatorservice.rb +3 -0
  54. data/lib/temporalio/api/payload_visitor.rb +1513 -0
  55. data/lib/temporalio/api/protocol/v1/message.rb +23 -0
  56. data/lib/temporalio/api/query/v1/message.rb +27 -0
  57. data/lib/temporalio/api/replication/v1/message.rb +26 -0
  58. data/lib/temporalio/api/schedule/v1/message.rb +43 -0
  59. data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
  60. data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
  61. data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
  62. data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
  63. data/lib/temporalio/api/taskqueue/v1/message.rb +45 -0
  64. data/lib/{gen/temporal/api/testservice/v1/request_response_pb.rb → temporalio/api/testservice/v1/request_response.rb} +6 -24
  65. data/lib/temporalio/api/testservice/v1/service.rb +23 -0
  66. data/lib/temporalio/api/update/v1/message.rb +33 -0
  67. data/lib/temporalio/api/version/v1/message.rb +26 -0
  68. data/lib/temporalio/api/workflow/v1/message.rb +43 -0
  69. data/lib/temporalio/api/workflowservice/v1/request_response.rb +204 -0
  70. data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
  71. data/lib/temporalio/api/workflowservice.rb +3 -0
  72. data/lib/temporalio/api.rb +14 -0
  73. data/lib/temporalio/cancellation.rb +170 -0
  74. data/lib/temporalio/client/activity_id_reference.rb +32 -0
  75. data/lib/temporalio/client/async_activity_handle.rb +85 -0
  76. data/lib/temporalio/client/connection/cloud_service.rb +726 -0
  77. data/lib/temporalio/client/connection/operator_service.rb +201 -0
  78. data/lib/temporalio/client/connection/service.rb +42 -0
  79. data/lib/temporalio/client/connection/test_service.rb +111 -0
  80. data/lib/temporalio/client/connection/workflow_service.rb +1041 -0
  81. data/lib/temporalio/client/connection.rb +316 -0
  82. data/lib/temporalio/client/interceptor.rb +416 -0
  83. data/lib/temporalio/client/schedule.rb +967 -0
  84. data/lib/temporalio/client/schedule_handle.rb +126 -0
  85. data/lib/temporalio/client/workflow_execution.rb +100 -0
  86. data/lib/temporalio/client/workflow_execution_count.rb +36 -0
  87. data/lib/temporalio/client/workflow_execution_status.rb +18 -0
  88. data/lib/temporalio/client/workflow_handle.rb +326 -180
  89. data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
  90. data/lib/temporalio/client/workflow_update_handle.rb +65 -0
  91. data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
  92. data/lib/temporalio/client.rb +447 -94
  93. data/lib/temporalio/common_enums.rb +41 -0
  94. data/lib/temporalio/converters/data_converter.rb +99 -0
  95. data/lib/temporalio/converters/failure_converter.rb +202 -0
  96. data/lib/temporalio/converters/payload_codec.rb +26 -0
  97. data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
  98. data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
  99. data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
  100. data/lib/temporalio/converters/payload_converter/composite.rb +66 -0
  101. data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
  102. data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
  103. data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
  104. data/lib/temporalio/converters/payload_converter.rb +71 -0
  105. data/lib/temporalio/converters/raw_value.rb +20 -0
  106. data/lib/temporalio/converters.rb +9 -0
  107. data/lib/temporalio/error/failure.rb +119 -94
  108. data/lib/temporalio/error.rb +155 -0
  109. data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
  110. data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +31 -0
  111. data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
  112. data/lib/temporalio/internal/bridge/api/common/common.rb +26 -0
  113. data/lib/temporalio/internal/bridge/api/core_interface.rb +40 -0
  114. data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
  115. data/lib/temporalio/internal/bridge/api/nexus/nexus.rb +33 -0
  116. data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +56 -0
  117. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +57 -0
  118. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +30 -0
  119. data/lib/temporalio/internal/bridge/api.rb +3 -0
  120. data/lib/temporalio/internal/bridge/client.rb +95 -0
  121. data/lib/temporalio/internal/bridge/runtime.rb +53 -0
  122. data/lib/temporalio/internal/bridge/testing.rb +66 -0
  123. data/lib/temporalio/internal/bridge/worker.rb +85 -0
  124. data/lib/temporalio/internal/bridge.rb +36 -0
  125. data/lib/temporalio/internal/client/implementation.rb +700 -0
  126. data/lib/temporalio/internal/metric.rb +122 -0
  127. data/lib/temporalio/internal/proto_utils.rb +133 -0
  128. data/lib/temporalio/internal/worker/activity_worker.rb +373 -0
  129. data/lib/temporalio/internal/worker/multi_runner.rb +213 -0
  130. data/lib/temporalio/internal/worker/workflow_instance/child_workflow_handle.rb +54 -0
  131. data/lib/temporalio/internal/worker/workflow_instance/context.rb +329 -0
  132. data/lib/temporalio/internal/worker/workflow_instance/details.rb +44 -0
  133. data/lib/temporalio/internal/worker/workflow_instance/external_workflow_handle.rb +32 -0
  134. data/lib/temporalio/internal/worker/workflow_instance/externally_immutable_hash.rb +22 -0
  135. data/lib/temporalio/internal/worker/workflow_instance/handler_execution.rb +25 -0
  136. data/lib/temporalio/internal/worker/workflow_instance/handler_hash.rb +41 -0
  137. data/lib/temporalio/internal/worker/workflow_instance/illegal_call_tracer.rb +97 -0
  138. data/lib/temporalio/internal/worker/workflow_instance/inbound_implementation.rb +62 -0
  139. data/lib/temporalio/internal/worker/workflow_instance/outbound_implementation.rb +415 -0
  140. data/lib/temporalio/internal/worker/workflow_instance/replay_safe_logger.rb +37 -0
  141. data/lib/temporalio/internal/worker/workflow_instance/replay_safe_metric.rb +40 -0
  142. data/lib/temporalio/internal/worker/workflow_instance/scheduler.rb +163 -0
  143. data/lib/temporalio/internal/worker/workflow_instance.rb +730 -0
  144. data/lib/temporalio/internal/worker/workflow_worker.rb +196 -0
  145. data/lib/temporalio/internal.rb +7 -0
  146. data/lib/temporalio/metric.rb +109 -0
  147. data/lib/temporalio/retry_policy.rb +55 -73
  148. data/lib/temporalio/runtime.rb +302 -13
  149. data/lib/temporalio/scoped_logger.rb +96 -0
  150. data/lib/temporalio/search_attributes.rb +343 -0
  151. data/lib/temporalio/testing/activity_environment.rb +132 -0
  152. data/lib/temporalio/testing/workflow_environment.rb +345 -74
  153. data/lib/temporalio/testing.rb +4 -169
  154. data/lib/temporalio/version.rb +3 -1
  155. data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
  156. data/lib/temporalio/worker/activity_executor/thread_pool.rb +46 -0
  157. data/lib/temporalio/worker/activity_executor.rb +55 -0
  158. data/lib/temporalio/worker/interceptor.rb +362 -0
  159. data/lib/temporalio/worker/thread_pool.rb +237 -0
  160. data/lib/temporalio/worker/tuner.rb +151 -0
  161. data/lib/temporalio/worker/workflow_executor/thread_pool.rb +230 -0
  162. data/lib/temporalio/worker/workflow_executor.rb +26 -0
  163. data/lib/temporalio/worker.rb +554 -161
  164. data/lib/temporalio/workflow/activity_cancellation_type.rb +20 -0
  165. data/lib/temporalio/workflow/child_workflow_cancellation_type.rb +21 -0
  166. data/lib/temporalio/workflow/child_workflow_handle.rb +43 -0
  167. data/lib/temporalio/workflow/definition.rb +566 -0
  168. data/lib/temporalio/workflow/external_workflow_handle.rb +41 -0
  169. data/lib/temporalio/workflow/future.rb +117 -104
  170. data/lib/temporalio/workflow/handler_unfinished_policy.rb +13 -0
  171. data/lib/temporalio/workflow/info.rb +63 -57
  172. data/lib/temporalio/workflow/parent_close_policy.rb +19 -0
  173. data/lib/temporalio/workflow/update_info.rb +20 -0
  174. data/lib/temporalio/workflow.rb +523 -0
  175. data/lib/temporalio/workflow_history.rb +22 -0
  176. data/lib/temporalio.rb +6 -7
  177. data/temporalio.gemspec +20 -39
  178. metadata +171 -710
  179. data/bridge/Cargo.lock +0 -2997
  180. data/bridge/Cargo.toml +0 -29
  181. data/bridge/sdk-core/ARCHITECTURE.md +0 -76
  182. data/bridge/sdk-core/Cargo.toml +0 -2
  183. data/bridge/sdk-core/LICENSE.txt +0 -23
  184. data/bridge/sdk-core/README.md +0 -117
  185. data/bridge/sdk-core/arch_docs/diagrams/README.md +0 -10
  186. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +0 -40
  187. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
  188. data/bridge/sdk-core/arch_docs/sticky_queues.md +0 -51
  189. data/bridge/sdk-core/client/Cargo.toml +0 -40
  190. data/bridge/sdk-core/client/LICENSE.txt +0 -23
  191. data/bridge/sdk-core/client/src/lib.rs +0 -1462
  192. data/bridge/sdk-core/client/src/metrics.rs +0 -174
  193. data/bridge/sdk-core/client/src/raw.rs +0 -932
  194. data/bridge/sdk-core/client/src/retry.rs +0 -763
  195. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +0 -185
  196. data/bridge/sdk-core/core/Cargo.toml +0 -129
  197. data/bridge/sdk-core/core/LICENSE.txt +0 -23
  198. data/bridge/sdk-core/core/benches/workflow_replay.rs +0 -76
  199. data/bridge/sdk-core/core/src/abstractions.rs +0 -355
  200. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +0 -1049
  201. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +0 -221
  202. data/bridge/sdk-core/core/src/core_tests/determinism.rs +0 -270
  203. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +0 -1046
  204. data/bridge/sdk-core/core/src/core_tests/mod.rs +0 -100
  205. data/bridge/sdk-core/core/src/core_tests/queries.rs +0 -893
  206. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +0 -65
  207. data/bridge/sdk-core/core/src/core_tests/workers.rs +0 -257
  208. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +0 -124
  209. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +0 -2433
  210. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +0 -609
  211. data/bridge/sdk-core/core/src/internal_flags.rs +0 -136
  212. data/bridge/sdk-core/core/src/lib.rs +0 -289
  213. data/bridge/sdk-core/core/src/pollers/mod.rs +0 -54
  214. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +0 -297
  215. data/bridge/sdk-core/core/src/protosext/mod.rs +0 -428
  216. data/bridge/sdk-core/core/src/replay/mod.rs +0 -215
  217. data/bridge/sdk-core/core/src/retry_logic.rs +0 -202
  218. data/bridge/sdk-core/core/src/telemetry/log_export.rs +0 -190
  219. data/bridge/sdk-core/core/src/telemetry/metrics.rs +0 -462
  220. data/bridge/sdk-core/core/src/telemetry/mod.rs +0 -423
  221. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +0 -83
  222. data/bridge/sdk-core/core/src/test_help/mod.rs +0 -939
  223. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +0 -536
  224. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +0 -89
  225. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +0 -1278
  226. data/bridge/sdk-core/core/src/worker/activities.rs +0 -557
  227. data/bridge/sdk-core/core/src/worker/client/mocks.rs +0 -107
  228. data/bridge/sdk-core/core/src/worker/client.rs +0 -389
  229. data/bridge/sdk-core/core/src/worker/mod.rs +0 -677
  230. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
  231. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +0 -99
  232. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +0 -1111
  233. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +0 -964
  234. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +0 -294
  235. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -168
  236. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +0 -918
  237. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +0 -137
  238. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +0 -158
  239. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +0 -130
  240. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +0 -1525
  241. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +0 -324
  242. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +0 -179
  243. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -659
  244. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +0 -439
  245. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +0 -435
  246. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +0 -175
  247. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +0 -249
  248. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +0 -85
  249. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +0 -1280
  250. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +0 -269
  251. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -213
  252. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +0 -1305
  253. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +0 -1276
  254. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +0 -128
  255. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +0 -125
  256. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +0 -85
  257. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +0 -117
  258. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +0 -24
  259. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +0 -715
  260. data/bridge/sdk-core/core-api/Cargo.toml +0 -33
  261. data/bridge/sdk-core/core-api/LICENSE.txt +0 -23
  262. data/bridge/sdk-core/core-api/src/errors.rs +0 -62
  263. data/bridge/sdk-core/core-api/src/lib.rs +0 -113
  264. data/bridge/sdk-core/core-api/src/telemetry.rs +0 -141
  265. data/bridge/sdk-core/core-api/src/worker.rs +0 -161
  266. data/bridge/sdk-core/etc/deps.svg +0 -162
  267. data/bridge/sdk-core/etc/dynamic-config.yaml +0 -2
  268. data/bridge/sdk-core/etc/otel-collector-config.yaml +0 -36
  269. data/bridge/sdk-core/etc/prometheus.yaml +0 -6
  270. data/bridge/sdk-core/etc/regen-depgraph.sh +0 -5
  271. data/bridge/sdk-core/fsm/Cargo.toml +0 -18
  272. data/bridge/sdk-core/fsm/LICENSE.txt +0 -23
  273. data/bridge/sdk-core/fsm/README.md +0 -3
  274. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  275. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -23
  276. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +0 -650
  277. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  278. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +0 -18
  279. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  280. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +0 -41
  281. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +0 -14
  282. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +0 -11
  283. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +0 -32
  284. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +0 -31
  285. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +0 -46
  286. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +0 -29
  287. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -12
  288. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +0 -32
  289. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +0 -18
  290. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  291. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +0 -11
  292. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  293. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +0 -11
  294. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  295. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  296. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -23
  297. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +0 -254
  298. data/bridge/sdk-core/fsm/src/lib.rs +0 -2
  299. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  300. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  301. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  302. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  303. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  304. data/bridge/sdk-core/integ-with-otel.sh +0 -7
  305. data/bridge/sdk-core/protos/api_upstream/README.md +0 -9
  306. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
  307. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -9
  308. data/bridge/sdk-core/protos/api_upstream/build/go.mod +0 -7
  309. data/bridge/sdk-core/protos/api_upstream/build/go.sum +0 -5
  310. data/bridge/sdk-core/protos/api_upstream/build/tools.go +0 -29
  311. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +0 -141
  312. data/bridge/sdk-core/protos/api_upstream/go.mod +0 -6
  313. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -89
  314. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +0 -248
  315. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +0 -123
  316. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -47
  317. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -52
  318. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -56
  319. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -170
  320. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -123
  321. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -51
  322. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -50
  323. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -41
  324. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -60
  325. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -59
  326. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -56
  327. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -122
  328. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -108
  329. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -114
  330. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -56
  331. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +0 -787
  332. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -99
  333. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -124
  334. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -80
  335. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -57
  336. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +0 -61
  337. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -55
  338. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -379
  339. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -63
  340. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -108
  341. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +0 -111
  342. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +0 -59
  343. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -146
  344. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -1199
  345. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -415
  346. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +0 -63
  347. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -79
  348. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -80
  349. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -78
  350. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +0 -16
  351. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +0 -31
  352. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -31
  353. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -270
  354. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -305
  355. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -35
  356. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +0 -38
  357. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +0 -13
  358. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
  359. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -63
  360. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -90
  361. data/bridge/sdk-core/rustfmt.toml +0 -1
  362. data/bridge/sdk-core/sdk/Cargo.toml +0 -48
  363. data/bridge/sdk-core/sdk/LICENSE.txt +0 -23
  364. data/bridge/sdk-core/sdk/src/activity_context.rs +0 -230
  365. data/bridge/sdk-core/sdk/src/app_data.rs +0 -37
  366. data/bridge/sdk-core/sdk/src/interceptors.rs +0 -50
  367. data/bridge/sdk-core/sdk/src/lib.rs +0 -861
  368. data/bridge/sdk-core/sdk/src/payload_converter.rs +0 -11
  369. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +0 -295
  370. data/bridge/sdk-core/sdk/src/workflow_context.rs +0 -694
  371. data/bridge/sdk-core/sdk/src/workflow_future.rs +0 -500
  372. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +0 -33
  373. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +0 -23
  374. data/bridge/sdk-core/sdk-core-protos/build.rs +0 -142
  375. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +0 -7
  376. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +0 -557
  377. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +0 -234
  378. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +0 -2088
  379. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +0 -48
  380. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +0 -14
  381. data/bridge/sdk-core/test-utils/Cargo.toml +0 -38
  382. data/bridge/sdk-core/test-utils/src/canned_histories.rs +0 -1389
  383. data/bridge/sdk-core/test-utils/src/histfetch.rs +0 -28
  384. data/bridge/sdk-core/test-utils/src/lib.rs +0 -709
  385. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +0 -50
  386. data/bridge/sdk-core/test-utils/src/workflows.rs +0 -29
  387. data/bridge/sdk-core/tests/fuzzy_workflow.rs +0 -130
  388. data/bridge/sdk-core/tests/heavy_tests.rs +0 -265
  389. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +0 -36
  390. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +0 -150
  391. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +0 -223
  392. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +0 -239
  393. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -90
  394. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +0 -314
  395. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +0 -151
  396. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +0 -902
  397. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
  398. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -60
  399. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -51
  400. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -51
  401. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -64
  402. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -47
  403. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -669
  404. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -54
  405. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -92
  406. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +0 -228
  407. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +0 -94
  408. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -171
  409. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +0 -85
  410. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -120
  411. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +0 -77
  412. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +0 -596
  413. data/bridge/sdk-core/tests/main.rs +0 -103
  414. data/bridge/sdk-core/tests/runner.rs +0 -132
  415. data/bridge/sdk-core/tests/wf_input_replay.rs +0 -32
  416. data/bridge/src/connection.rs +0 -202
  417. data/bridge/src/lib.rs +0 -494
  418. data/bridge/src/runtime.rs +0 -54
  419. data/bridge/src/test_server.rs +0 -153
  420. data/bridge/src/worker.rs +0 -197
  421. data/ext/Rakefile +0 -9
  422. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +0 -14
  423. data/lib/gen/temporal/api/batch/v1/message_pb.rb +0 -50
  424. data/lib/gen/temporal/api/command/v1/message_pb.rb +0 -160
  425. data/lib/gen/temporal/api/common/v1/message_pb.rb +0 -73
  426. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +0 -33
  427. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +0 -37
  428. data/lib/gen/temporal/api/enums/v1/common_pb.rb +0 -42
  429. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +0 -68
  430. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +0 -79
  431. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +0 -37
  432. data/lib/gen/temporal/api/enums/v1/query_pb.rb +0 -31
  433. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +0 -24
  434. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +0 -28
  435. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +0 -30
  436. data/lib/gen/temporal/api/enums/v1/update_pb.rb +0 -25
  437. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +0 -89
  438. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +0 -84
  439. data/lib/gen/temporal/api/failure/v1/message_pb.rb +0 -83
  440. data/lib/gen/temporal/api/filter/v1/message_pb.rb +0 -40
  441. data/lib/gen/temporal/api/history/v1/message_pb.rb +0 -498
  442. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +0 -64
  443. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +0 -88
  444. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +0 -20
  445. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +0 -30
  446. data/lib/gen/temporal/api/query/v1/message_pb.rb +0 -38
  447. data/lib/gen/temporal/api/replication/v1/message_pb.rb +0 -37
  448. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +0 -149
  449. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +0 -23
  450. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +0 -73
  451. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +0 -21
  452. data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -72
  453. data/lib/gen/temporal/api/version/v1/message_pb.rb +0 -41
  454. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +0 -111
  455. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +0 -798
  456. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +0 -20
  457. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +0 -62
  458. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +0 -61
  459. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +0 -61
  460. data/lib/gen/temporal/sdk/core/common/common_pb.rb +0 -26
  461. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +0 -40
  462. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +0 -31
  463. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +0 -171
  464. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +0 -200
  465. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +0 -41
  466. data/lib/temporalio/bridge/connect_options.rb +0 -15
  467. data/lib/temporalio/bridge/error.rb +0 -8
  468. data/lib/temporalio/bridge/retry_config.rb +0 -24
  469. data/lib/temporalio/bridge/tls_options.rb +0 -19
  470. data/lib/temporalio/bridge.rb +0 -14
  471. data/lib/temporalio/client/implementation.rb +0 -340
  472. data/lib/temporalio/connection/retry_config.rb +0 -44
  473. data/lib/temporalio/connection/service.rb +0 -20
  474. data/lib/temporalio/connection/test_service.rb +0 -92
  475. data/lib/temporalio/connection/tls_options.rb +0 -51
  476. data/lib/temporalio/connection/workflow_service.rb +0 -731
  477. data/lib/temporalio/connection.rb +0 -86
  478. data/lib/temporalio/data_converter.rb +0 -191
  479. data/lib/temporalio/error/workflow_failure.rb +0 -19
  480. data/lib/temporalio/errors.rb +0 -40
  481. data/lib/temporalio/failure_converter/base.rb +0 -26
  482. data/lib/temporalio/failure_converter/basic.rb +0 -319
  483. data/lib/temporalio/failure_converter.rb +0 -7
  484. data/lib/temporalio/interceptor/activity_inbound.rb +0 -22
  485. data/lib/temporalio/interceptor/activity_outbound.rb +0 -24
  486. data/lib/temporalio/interceptor/chain.rb +0 -28
  487. data/lib/temporalio/interceptor/client.rb +0 -127
  488. data/lib/temporalio/interceptor.rb +0 -22
  489. data/lib/temporalio/payload_codec/base.rb +0 -32
  490. data/lib/temporalio/payload_converter/base.rb +0 -24
  491. data/lib/temporalio/payload_converter/bytes.rb +0 -27
  492. data/lib/temporalio/payload_converter/composite.rb +0 -49
  493. data/lib/temporalio/payload_converter/encoding_base.rb +0 -35
  494. data/lib/temporalio/payload_converter/json.rb +0 -26
  495. data/lib/temporalio/payload_converter/nil.rb +0 -26
  496. data/lib/temporalio/payload_converter.rb +0 -14
  497. data/lib/temporalio/retry_state.rb +0 -35
  498. data/lib/temporalio/testing/time_skipping_handle.rb +0 -32
  499. data/lib/temporalio/testing/time_skipping_interceptor.rb +0 -23
  500. data/lib/temporalio/timeout_type.rb +0 -29
  501. data/lib/temporalio/worker/activity_runner.rb +0 -114
  502. data/lib/temporalio/worker/activity_worker.rb +0 -164
  503. data/lib/temporalio/worker/reactor.rb +0 -46
  504. data/lib/temporalio/worker/runner.rb +0 -63
  505. data/lib/temporalio/worker/sync_worker.rb +0 -124
  506. data/lib/temporalio/worker/thread_pool_executor.rb +0 -51
  507. data/lib/temporalio/workflow/async.rb +0 -46
  508. data/lib/temporalio/workflow/execution_info.rb +0 -54
  509. data/lib/temporalio/workflow/execution_status.rb +0 -36
  510. data/lib/temporalio/workflow/id_reuse_policy.rb +0 -36
  511. data/lib/temporalio/workflow/query_reject_condition.rb +0 -33
  512. data/lib/thermite_patch.rb +0 -33
  513. data/sig/async.rbs +0 -17
  514. data/sig/protobuf.rbs +0 -16
  515. data/sig/protos/dependencies/gogoproto/gogo.rbs +0 -914
  516. data/sig/protos/google/protobuf/any.rbs +0 -157
  517. data/sig/protos/google/protobuf/descriptor.rbs +0 -2825
  518. data/sig/protos/google/protobuf/duration.rbs +0 -114
  519. data/sig/protos/google/protobuf/empty.rbs +0 -36
  520. data/sig/protos/google/protobuf/timestamp.rbs +0 -145
  521. data/sig/protos/google/protobuf/wrappers.rbs +0 -358
  522. data/sig/protos/temporal/api/batch/v1/message.rbs +0 -300
  523. data/sig/protos/temporal/api/command/v1/message.rbs +0 -1399
  524. data/sig/protos/temporal/api/common/v1/message.rbs +0 -528
  525. data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +0 -79
  526. data/sig/protos/temporal/api/enums/v1/command_type.rbs +0 -68
  527. data/sig/protos/temporal/api/enums/v1/common.rbs +0 -118
  528. data/sig/protos/temporal/api/enums/v1/event_type.rbs +0 -264
  529. data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +0 -277
  530. data/sig/protos/temporal/api/enums/v1/namespace.rbs +0 -108
  531. data/sig/protos/temporal/api/enums/v1/query.rbs +0 -81
  532. data/sig/protos/temporal/api/enums/v1/reset.rbs +0 -44
  533. data/sig/protos/temporal/api/enums/v1/schedule.rbs +0 -72
  534. data/sig/protos/temporal/api/enums/v1/task_queue.rbs +0 -92
  535. data/sig/protos/temporal/api/enums/v1/update.rbs +0 -64
  536. data/sig/protos/temporal/api/enums/v1/workflow.rbs +0 -371
  537. data/sig/protos/temporal/api/errordetails/v1/message.rbs +0 -551
  538. data/sig/protos/temporal/api/failure/v1/message.rbs +0 -581
  539. data/sig/protos/temporal/api/filter/v1/message.rbs +0 -171
  540. data/sig/protos/temporal/api/history/v1/message.rbs +0 -4609
  541. data/sig/protos/temporal/api/namespace/v1/message.rbs +0 -410
  542. data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +0 -643
  543. data/sig/protos/temporal/api/operatorservice/v1/service.rbs +0 -17
  544. data/sig/protos/temporal/api/protocol/v1/message.rbs +0 -84
  545. data/sig/protos/temporal/api/query/v1/message.rbs +0 -182
  546. data/sig/protos/temporal/api/replication/v1/message.rbs +0 -148
  547. data/sig/protos/temporal/api/schedule/v1/message.rbs +0 -1488
  548. data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +0 -110
  549. data/sig/protos/temporal/api/taskqueue/v1/message.rbs +0 -486
  550. data/sig/protos/temporal/api/testservice/v1/request_response.rbs +0 -249
  551. data/sig/protos/temporal/api/testservice/v1/service.rbs +0 -15
  552. data/sig/protos/temporal/api/update/v1/message.rbs +0 -489
  553. data/sig/protos/temporal/api/version/v1/message.rbs +0 -184
  554. data/sig/protos/temporal/api/workflow/v1/message.rbs +0 -824
  555. data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +0 -7250
  556. data/sig/protos/temporal/api/workflowservice/v1/service.rbs +0 -22
  557. data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +0 -380
  558. data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +0 -386
  559. data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +0 -323
  560. data/sig/protos/temporal/sdk/core/common/common.rbs +0 -62
  561. data/sig/protos/temporal/sdk/core/core_interface.rbs +0 -101
  562. data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +0 -119
  563. data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +0 -1473
  564. data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +0 -1784
  565. data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +0 -180
  566. data/sig/ruby.rbs +0 -12
  567. data/sig/temporalio/activity/context.rbs +0 -29
  568. data/sig/temporalio/activity/info.rbs +0 -43
  569. data/sig/temporalio/activity.rbs +0 -19
  570. data/sig/temporalio/bridge/connect_options.rbs +0 -19
  571. data/sig/temporalio/bridge/error.rbs +0 -8
  572. data/sig/temporalio/bridge/retry_config.rbs +0 -21
  573. data/sig/temporalio/bridge/tls_options.rbs +0 -17
  574. data/sig/temporalio/bridge.rbs +0 -71
  575. data/sig/temporalio/client/implementation.rbs +0 -38
  576. data/sig/temporalio/client/workflow_handle.rbs +0 -41
  577. data/sig/temporalio/client.rbs +0 -35
  578. data/sig/temporalio/connection/retry_config.rbs +0 -37
  579. data/sig/temporalio/connection/service.rbs +0 -14
  580. data/sig/temporalio/connection/test_service.rbs +0 -13
  581. data/sig/temporalio/connection/tls_options.rbs +0 -43
  582. data/sig/temporalio/connection/workflow_service.rbs +0 -48
  583. data/sig/temporalio/connection.rbs +0 -30
  584. data/sig/temporalio/data_converter.rbs +0 -35
  585. data/sig/temporalio/error/failure.rbs +0 -121
  586. data/sig/temporalio/error/workflow_failure.rbs +0 -9
  587. data/sig/temporalio/errors.rbs +0 -36
  588. data/sig/temporalio/failure_converter/base.rbs +0 -12
  589. data/sig/temporalio/failure_converter/basic.rbs +0 -86
  590. data/sig/temporalio/failure_converter.rbs +0 -5
  591. data/sig/temporalio/interceptor/activity_inbound.rbs +0 -21
  592. data/sig/temporalio/interceptor/activity_outbound.rbs +0 -10
  593. data/sig/temporalio/interceptor/chain.rbs +0 -24
  594. data/sig/temporalio/interceptor/client.rbs +0 -148
  595. data/sig/temporalio/interceptor.rbs +0 -6
  596. data/sig/temporalio/payload_codec/base.rbs +0 -12
  597. data/sig/temporalio/payload_converter/base.rbs +0 -12
  598. data/sig/temporalio/payload_converter/bytes.rbs +0 -9
  599. data/sig/temporalio/payload_converter/composite.rbs +0 -19
  600. data/sig/temporalio/payload_converter/encoding_base.rbs +0 -14
  601. data/sig/temporalio/payload_converter/json.rbs +0 -9
  602. data/sig/temporalio/payload_converter/nil.rbs +0 -9
  603. data/sig/temporalio/payload_converter.rbs +0 -5
  604. data/sig/temporalio/retry_policy.rbs +0 -25
  605. data/sig/temporalio/retry_state.rbs +0 -20
  606. data/sig/temporalio/runtime.rbs +0 -12
  607. data/sig/temporalio/testing/time_skipping_handle.rbs +0 -15
  608. data/sig/temporalio/testing/time_skipping_interceptor.rbs +0 -13
  609. data/sig/temporalio/testing/workflow_environment.rbs +0 -22
  610. data/sig/temporalio/testing.rbs +0 -35
  611. data/sig/temporalio/timeout_type.rbs +0 -15
  612. data/sig/temporalio/version.rbs +0 -3
  613. data/sig/temporalio/worker/activity_runner.rbs +0 -35
  614. data/sig/temporalio/worker/activity_worker.rbs +0 -44
  615. data/sig/temporalio/worker/reactor.rbs +0 -22
  616. data/sig/temporalio/worker/runner.rbs +0 -21
  617. data/sig/temporalio/worker/sync_worker.rbs +0 -23
  618. data/sig/temporalio/worker/thread_pool_executor.rbs +0 -23
  619. data/sig/temporalio/worker.rbs +0 -46
  620. data/sig/temporalio/workflow/async.rbs +0 -9
  621. data/sig/temporalio/workflow/execution_info.rbs +0 -55
  622. data/sig/temporalio/workflow/execution_status.rbs +0 -21
  623. data/sig/temporalio/workflow/future.rbs +0 -40
  624. data/sig/temporalio/workflow/id_reuse_policy.rbs +0 -15
  625. data/sig/temporalio/workflow/info.rbs +0 -55
  626. data/sig/temporalio/workflow/query_reject_condition.rbs +0 -14
  627. data/sig/temporalio.rbs +0 -2
  628. data/sig/thermite_patch.rbs +0 -15
@@ -1,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
- }