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
@@ -0,0 +1,345 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'temporalio/activity'
4
+ require 'temporalio/activity/definition'
5
+ require 'temporalio/cancellation'
6
+ require 'temporalio/internal/bridge/api'
7
+ require 'temporalio/internal/proto_utils'
8
+ require 'temporalio/scoped_logger'
9
+ require 'temporalio/worker/interceptor'
10
+
11
+ module Temporalio
12
+ module Internal
13
+ module Worker
14
+ class ActivityWorker
15
+ LOG_TASKS = false
16
+
17
+ attr_reader :worker, :bridge_worker
18
+
19
+ def initialize(worker, bridge_worker)
20
+ @worker = worker
21
+ @bridge_worker = bridge_worker
22
+
23
+ # Create shared logger that gives scoped activity details
24
+ @scoped_logger = ScopedLogger.new(@worker.options.logger)
25
+ @scoped_logger.scoped_values_getter = proc {
26
+ Activity::Context.current_or_nil&._scoped_logger_info
27
+ }
28
+
29
+ # Build up activity hash by name, failing if any fail validation
30
+ @activities = worker.options.activities.each_with_object({}) do |act, hash|
31
+ # Class means create each time, instance means just call, definition
32
+ # does nothing special
33
+ defn = Activity::Definition.from_activity(act)
34
+ # Confirm name not in use
35
+ raise ArgumentError, "Multiple activities named #{defn.name}" if hash.key?(defn.name)
36
+
37
+ # Confirm executor is a known executor and let it initialize
38
+ executor = worker.options.activity_executors[defn.executor]
39
+ raise ArgumentError, "Unknown executor '#{defn.executor}'" if executor.nil?
40
+
41
+ executor.initialize_activity(defn)
42
+
43
+ hash[defn.name] = defn
44
+ end
45
+
46
+ # Need mutex for the rest of these
47
+ @running_activities_mutex = Mutex.new
48
+ @running_activities = {}
49
+ @running_activities_empty_condvar = ConditionVariable.new
50
+ end
51
+
52
+ def set_running_activity(task_token, activity)
53
+ @running_activities_mutex.synchronize do
54
+ @running_activities[task_token] = activity
55
+ end
56
+ end
57
+
58
+ def get_running_activity(task_token)
59
+ @running_activities_mutex.synchronize do
60
+ @running_activities[task_token]
61
+ end
62
+ end
63
+
64
+ def remove_running_activity(task_token)
65
+ @running_activities_mutex.synchronize do
66
+ @running_activities.delete(task_token)
67
+ @running_activities_empty_condvar.broadcast if @running_activities.empty?
68
+ end
69
+ end
70
+
71
+ def wait_all_complete
72
+ @running_activities_mutex.synchronize do
73
+ @running_activities_empty_condvar.wait(@running_activities_mutex) until @running_activities.empty?
74
+ end
75
+ end
76
+
77
+ def handle_task(task)
78
+ @scoped_logger.debug("Received activity task: #{task}") if LOG_TASKS
79
+ if !task.start.nil?
80
+ handle_start_task(task.task_token, task.start)
81
+ elsif !task.cancel.nil?
82
+ handle_cancel_task(task.task_token, task.cancel)
83
+ else
84
+ raise "Unrecognized activity task: #{task}"
85
+ end
86
+ end
87
+
88
+ def handle_start_task(task_token, start)
89
+ set_running_activity(task_token, nil)
90
+
91
+ # Find activity definition
92
+ defn = @activities[start.activity_type]
93
+ if defn.nil?
94
+ raise Error::ApplicationError.new(
95
+ "Activity #{start.activity_type} for workflow #{start.workflow_execution.workflow_id} " \
96
+ "is not registered on this worker, available activities: #{@activities.keys.sort.join(', ')}",
97
+ type: 'NotFoundError'
98
+ )
99
+ end
100
+
101
+ # Run everything else in the excecutor
102
+ executor = @worker.options.activity_executors[defn.executor]
103
+ executor.execute_activity(defn) do
104
+ # Set current executor
105
+ Activity::Context._current_executor = executor
106
+ # Execute with error handling
107
+ execute_activity(task_token, defn, start)
108
+ ensure
109
+ # Unset at the end
110
+ Activity::Context._current_executor = nil
111
+ end
112
+ rescue Exception => e # rubocop:disable Lint/RescueException We are intending to catch everything here
113
+ remove_running_activity(task_token)
114
+ @scoped_logger.warn("Failed starting activity #{start.activity_type}")
115
+ @scoped_logger.warn(e)
116
+
117
+ # We need to complete the activity task as failed, but this is on the
118
+ # hot path for polling, so we want to complete it in the background
119
+ begin
120
+ @bridge_worker.complete_activity_task_in_background(
121
+ Bridge::Api::CoreInterface::ActivityTaskCompletion.new(
122
+ task_token:,
123
+ result: Bridge::Api::ActivityResult::ActivityExecutionResult.new(
124
+ failed: Bridge::Api::ActivityResult::Failure.new(
125
+ # TODO(cretz): If failure conversion does slow failure
126
+ # encoding, it can gum up the system
127
+ failure: @worker.options.client.data_converter.to_failure(e)
128
+ )
129
+ )
130
+ )
131
+ )
132
+ rescue StandardError => e_inner
133
+ @scoped_logger.error("Failed building start failure to return for #{start.activity_type}")
134
+ @scoped_logger.error(e_inner)
135
+ end
136
+ end
137
+
138
+ def handle_cancel_task(task_token, cancel)
139
+ activity = get_running_activity(task_token)
140
+ if activity.nil?
141
+ @scoped_logger.warn("Cannot find activity to cancel for token #{task_token}")
142
+ return
143
+ end
144
+ activity._server_requested_cancel = true
145
+ _, cancel_proc = activity.cancellation
146
+ begin
147
+ cancel_proc.call(reason: cancel.reason.to_s)
148
+ rescue StandardError => e
149
+ @scoped_logger.warn("Failed cancelling activity #{activity.info.activity_type} \
150
+ with ID #{activity.info.activity_id}")
151
+ @scoped_logger.warn(e)
152
+ end
153
+ end
154
+
155
+ def execute_activity(task_token, defn, start)
156
+ # Build info
157
+ info = Activity::Info.new(
158
+ activity_id: start.activity_id,
159
+ activity_type: start.activity_type,
160
+ attempt: start.attempt,
161
+ current_attempt_scheduled_time: start.current_attempt_scheduled_time.to_time,
162
+ heartbeat_details: ProtoUtils.convert_from_payload_array(
163
+ @worker.options.client.data_converter,
164
+ start.heartbeat_details.to_ary
165
+ ),
166
+ heartbeat_timeout: start.heartbeat_timeout&.to_f,
167
+ local?: start.is_local,
168
+ schedule_to_close_timeout: start.schedule_to_close_timeout&.to_f,
169
+ scheduled_time: start.scheduled_time.to_time,
170
+ start_to_close_timeout: start.start_to_close_timeout&.to_f,
171
+ started_time: start.started_time.to_time,
172
+ task_queue: @worker.options.task_queue,
173
+ task_token:,
174
+ workflow_id: start.workflow_execution.workflow_id,
175
+ workflow_namespace: start.workflow_namespace,
176
+ workflow_run_id: start.workflow_execution.run_id,
177
+ workflow_type: start.workflow_type
178
+ ).freeze
179
+
180
+ # Build input
181
+ input = Temporalio::Worker::Interceptor::ExecuteActivityInput.new(
182
+ proc: defn.proc,
183
+ args: ProtoUtils.convert_from_payload_array(
184
+ @worker.options.client.data_converter,
185
+ start.input.to_ary
186
+ ),
187
+ headers: start.header_fields
188
+ )
189
+
190
+ # Run
191
+ activity = RunningActivity.new(
192
+ info:,
193
+ cancellation: Cancellation.new,
194
+ worker_shutdown_cancellation: @worker._worker_shutdown_cancellation,
195
+ payload_converter: @worker.options.client.data_converter.payload_converter,
196
+ logger: @scoped_logger
197
+ )
198
+ Activity::Context._current_executor&.set_activity_context(defn, activity)
199
+ set_running_activity(task_token, activity)
200
+ run_activity(activity, input)
201
+ rescue Exception => e # rubocop:disable Lint/RescueException We are intending to catch everything here
202
+ @scoped_logger.warn("Failed starting or sending completion for activity #{start.activity_type}")
203
+ @scoped_logger.warn(e)
204
+ # This means that the activity couldn't start or send completion (run
205
+ # handles its own errors).
206
+ begin
207
+ @bridge_worker.complete_activity_task(
208
+ Bridge::Api::CoreInterface::ActivityTaskCompletion.new(
209
+ task_token:,
210
+ result: Bridge::Api::ActivityResult::ActivityExecutionResult.new(
211
+ failed: Bridge::Api::ActivityResult::Failure.new(
212
+ failure: @worker.options.client.data_converter.to_failure(e)
213
+ )
214
+ )
215
+ )
216
+ )
217
+ rescue StandardError => e_inner
218
+ @scoped_logger.error("Failed sending failure for activity #{start.activity_type}")
219
+ @scoped_logger.error(e_inner)
220
+ end
221
+ ensure
222
+ Activity::Context._current_executor&.set_activity_context(defn, nil)
223
+ remove_running_activity(task_token)
224
+ end
225
+
226
+ def run_activity(activity, input)
227
+ result = begin
228
+ # Build impl with interceptors
229
+ # @type var impl: Temporalio::Worker::Interceptor::ActivityInbound
230
+ impl = InboundImplementation.new(self)
231
+ impl = @worker._all_interceptors.reverse_each.reduce(impl) do |acc, int|
232
+ int.intercept_activity(acc)
233
+ end
234
+ impl.init(OutboundImplementation.new(self))
235
+
236
+ # Execute
237
+ result = impl.execute(input)
238
+
239
+ # Success
240
+ Bridge::Api::ActivityResult::ActivityExecutionResult.new(
241
+ completed: Bridge::Api::ActivityResult::Success.new(
242
+ result: @worker.options.client.data_converter.to_payload(result)
243
+ )
244
+ )
245
+ rescue Exception => e # rubocop:disable Lint/RescueException We are intending to catch everything here
246
+ if e.is_a?(Activity::CompleteAsyncError)
247
+ # Wanting to complete async
248
+ @scoped_logger.debug('Completing activity asynchronously')
249
+ Bridge::Api::ActivityResult::ActivityExecutionResult.new(
250
+ will_complete_async: Bridge::Api::ActivityResult::WillCompleteAsync.new
251
+ )
252
+ elsif e.is_a?(Error::CanceledError) && activity._server_requested_cancel
253
+ # Server requested cancel
254
+ @scoped_logger.debug('Completing activity as canceled')
255
+ Bridge::Api::ActivityResult::ActivityExecutionResult.new(
256
+ cancelled: Bridge::Api::ActivityResult::Cancellation.new(
257
+ failure: @worker.options.client.data_converter.to_failure(e)
258
+ )
259
+ )
260
+ else
261
+ # General failure
262
+ @scoped_logger.warn('Completing activity as failed')
263
+ @scoped_logger.warn(e)
264
+ Bridge::Api::ActivityResult::ActivityExecutionResult.new(
265
+ failed: Bridge::Api::ActivityResult::Failure.new(
266
+ failure: @worker.options.client.data_converter.to_failure(e)
267
+ )
268
+ )
269
+ end
270
+ end
271
+
272
+ @scoped_logger.debug("Sending activity completion: #{result}") if LOG_TASKS
273
+ @bridge_worker.complete_activity_task(
274
+ Bridge::Api::CoreInterface::ActivityTaskCompletion.new(
275
+ task_token: activity.info.task_token,
276
+ result:
277
+ )
278
+ )
279
+ end
280
+
281
+ class RunningActivity < Activity::Context
282
+ attr_reader :info, :cancellation, :worker_shutdown_cancellation, :payload_converter, :logger
283
+ attr_accessor :_outbound_impl, :_server_requested_cancel
284
+
285
+ def initialize( # rubocop:disable Lint/MissingSuper
286
+ info:,
287
+ cancellation:,
288
+ worker_shutdown_cancellation:,
289
+ payload_converter:,
290
+ logger:
291
+ )
292
+ @info = info
293
+ @cancellation = cancellation
294
+ @worker_shutdown_cancellation = worker_shutdown_cancellation
295
+ @payload_converter = payload_converter
296
+ @logger = logger
297
+ @_outbound_impl = nil
298
+ @_server_requested_cancel = false
299
+ end
300
+
301
+ def heartbeat(*details)
302
+ raise 'Implementation not set yet' if _outbound_impl.nil?
303
+
304
+ _outbound_impl.heartbeat(Temporalio::Worker::Interceptor::HeartbeatActivityInput.new(details:))
305
+ end
306
+ end
307
+
308
+ class InboundImplementation < Temporalio::Worker::Interceptor::ActivityInbound
309
+ def initialize(worker)
310
+ super(nil) # steep:ignore
311
+ @worker = worker
312
+ end
313
+
314
+ def init(outbound)
315
+ context = Activity::Context.current
316
+ raise 'Unexpected context type' unless context.is_a?(RunningActivity)
317
+
318
+ context._outbound_impl = outbound
319
+ end
320
+
321
+ def execute(input)
322
+ input.proc.call(*input.args)
323
+ end
324
+ end
325
+
326
+ class OutboundImplementation < Temporalio::Worker::Interceptor::ActivityOutbound
327
+ def initialize(worker)
328
+ super(nil) # steep:ignore
329
+ @worker = worker
330
+ end
331
+
332
+ def heartbeat(input)
333
+ @worker.bridge_worker.record_activity_heartbeat(
334
+ Bridge::Api::CoreInterface::ActivityHeartbeat.new(
335
+ task_token: Activity::Context.current.info.task_token,
336
+ details: ProtoUtils.convert_to_payload_array(@worker.worker.options.client.data_converter,
337
+ input.details)
338
+ ).to_proto
339
+ )
340
+ end
341
+ end
342
+ end
343
+ end
344
+ end
345
+ end
@@ -0,0 +1,169 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'singleton'
4
+ require 'temporalio/internal/bridge/worker'
5
+
6
+ module Temporalio
7
+ module Internal
8
+ module Worker
9
+ class MultiRunner
10
+ def initialize(workers:, shutdown_signals:)
11
+ @workers = workers
12
+ @queue = Queue.new
13
+
14
+ @shutdown_initiated_mutex = Mutex.new
15
+ @shutdown_initiated = false
16
+
17
+ # Trap signals to push to queue
18
+ shutdown_signals.each do |signal|
19
+ Signal.trap(signal) { @queue.push(Event::ShutdownSignalReceived.new) }
20
+ end
21
+
22
+ # Start pollers
23
+ Bridge::Worker.async_poll_all(workers.map(&:_bridge_worker), @queue)
24
+ end
25
+
26
+ def apply_thread_or_fiber_block(&)
27
+ return unless block_given?
28
+
29
+ @thread_or_fiber = if Fiber.current_scheduler
30
+ Fiber.schedule do
31
+ @queue.push(Event::BlockSuccess.new(result: yield))
32
+ rescue InjectEventForTesting => e
33
+ @queue.push(e.event)
34
+ @queue.push(Event::BlockSuccess.new(result: e))
35
+ rescue Exception => e # rubocop:disable Lint/RescueException Intentionally catch all
36
+ @queue.push(Event::BlockFailure.new(error: e))
37
+ end
38
+ else
39
+ Thread.new do
40
+ @queue.push(Event::BlockSuccess.new(result: yield))
41
+ rescue InjectEventForTesting => e
42
+ @queue.push(e.event)
43
+ @queue.push(Event::BlockSuccess.new(result: e))
44
+ rescue Exception => e # rubocop:disable Lint/RescueException Intentionally catch all
45
+ @queue.push(Event::BlockFailure.new(error: e))
46
+ end
47
+ end
48
+ end
49
+
50
+ def raise_in_thread_or_fiber_block(error)
51
+ @thread_or_fiber&.raise(error)
52
+ end
53
+
54
+ # Clarify this is the only thread-safe function here
55
+ def initiate_shutdown
56
+ should_call = @shutdown_initiated_mutex.synchronize do
57
+ break false if @shutdown_initiated
58
+
59
+ @shutdown_initiated = true
60
+ end
61
+ return unless should_call
62
+
63
+ @workers.each(&:_initiate_shutdown)
64
+ end
65
+
66
+ def wait_complete_and_finalize_shutdown
67
+ # Wait for them all to complete
68
+ @workers.each(&:_wait_all_complete)
69
+
70
+ # Finalize them all
71
+ Bridge::Worker.finalize_shutdown_all(@workers.map(&:_bridge_worker))
72
+ end
73
+
74
+ # Intentionally not an enumerable/enumerator since stop semantics are
75
+ # caller determined
76
+ def next_event
77
+ # Queue value is one of the following:
78
+ # * Event - non-poller event
79
+ # * [worker index, :activity/:workflow, bytes] - poll success
80
+ # * [worker index, :activity/:workflow, error] - poll fail
81
+ # * [worker index, :activity/:workflow, nil] - worker shutdown
82
+ # * [nil, nil, nil] - all pollers done
83
+ result = @queue.pop
84
+ if result.is_a?(Event)
85
+ result
86
+ else
87
+ worker_index, worker_type, poll_result = result
88
+ if worker_index.nil? || worker_type.nil?
89
+ Event::AllPollersShutDown.instance
90
+ else
91
+ worker = @workers[worker_index]
92
+ case poll_result
93
+ when nil
94
+ Event::PollerShutDown.new(worker:, worker_type:)
95
+ when Exception
96
+ Event::PollFailure.new(worker:, worker_type:, error: poll_result)
97
+ else
98
+ Event::PollSuccess.new(worker:, worker_type:, bytes: poll_result)
99
+ end
100
+ end
101
+ end
102
+ end
103
+
104
+ class Event
105
+ class PollSuccess < Event
106
+ attr_reader :worker, :worker_type, :bytes
107
+
108
+ def initialize(worker:, worker_type:, bytes:) # rubocop:disable Lint/MissingSuper
109
+ @worker = worker
110
+ @worker_type = worker_type
111
+ @bytes = bytes
112
+ end
113
+ end
114
+
115
+ class PollFailure < Event
116
+ attr_reader :worker, :worker_type, :error
117
+
118
+ def initialize(worker:, worker_type:, error:) # rubocop:disable Lint/MissingSuper
119
+ @worker = worker
120
+ @worker_type = worker_type
121
+ @error = error
122
+ end
123
+ end
124
+
125
+ class PollerShutDown < Event
126
+ attr_reader :worker, :worker_type
127
+
128
+ def initialize(worker:, worker_type:) # rubocop:disable Lint/MissingSuper
129
+ @worker = worker
130
+ @worker_type = worker_type
131
+ end
132
+ end
133
+
134
+ class AllPollersShutDown < Event
135
+ include Singleton
136
+ end
137
+
138
+ class BlockSuccess < Event
139
+ attr_reader :result
140
+
141
+ def initialize(result:) # rubocop:disable Lint/MissingSuper
142
+ @result = result
143
+ end
144
+ end
145
+
146
+ class BlockFailure < Event
147
+ attr_reader :error
148
+
149
+ def initialize(error:) # rubocop:disable Lint/MissingSuper
150
+ @error = error
151
+ end
152
+ end
153
+
154
+ class ShutdownSignalReceived < Event
155
+ end
156
+ end
157
+
158
+ class InjectEventForTesting < Temporalio::Error
159
+ attr_reader :event
160
+
161
+ def initialize(event)
162
+ super('Injecting event for testing')
163
+ @event = event
164
+ end
165
+ end
166
+ end
167
+ end
168
+ end
169
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Temporalio
4
+ # @!visibility private
5
+ module Internal
6
+ end
7
+ end
@@ -1,91 +1,50 @@
1
- require 'temporal/api/common/v1/message_pb'
2
- require 'temporalio/errors'
1
+ # frozen_string_literal: true
2
+
3
+ require 'temporalio/internal/proto_utils'
3
4
 
4
5
  module Temporalio
5
6
  # Options for retrying workflows and activities.
6
7
  #
7
- # @see https://docs.temporal.io/application-development/features/#workflow-retry-policy
8
- class RetryPolicy
9
- class Invalid < Temporalio::Error; end
10
-
11
- # @return [Integer] Backoff interval for the first retry.
12
- attr_reader :initial_interval
13
-
14
- # @return [Float] Coefficient to multiply previous backoff interval by to get new interval.
15
- attr_reader :backoff
16
-
17
- # @return [Integer, nil] Maximum backoff interval between retries. Default 100x
18
- # {#initial_interval}.
19
- attr_reader :max_interval
20
-
21
- # @return [Integer] Maximum number of attempts. If 0, the default, there is no maximum.
22
- attr_reader :max_attempts
23
-
24
- # @return [Array<String>] List of error types that are not retryable.
25
- attr_reader :non_retriable_errors
26
-
27
- def self.from_proto(proto)
28
- new(
29
- initial_interval: proto.initial_interval&.to_f&.round || 0,
30
- backoff: proto.backoff_coefficient&.to_f || 0.0,
31
- max_interval: proto.maximum_interval&.to_f&.round || 0,
32
- max_attempts: proto.maximum_attempts || 1,
33
- non_retriable_errors: proto.non_retryable_error_types || [],
34
- ).freeze
35
- end
36
-
37
- # @param initial_interval [Integer] Backoff interval (in seconds) for the first retry.
38
- # @param backoff [Float] Coefficient to multiply previous backoff interval by to get new
39
- # interval.
40
- # @param max_interval [Integer] Maximum backoff interval between retries. Default 100x
41
- # {#initial_interval}.
42
- # @param max_attempts [Integer] Maximum number of attempts. If 0, there is no maximum.
43
- # @param non_retriable_errors [Array<Class, String>] List of error types that are not retryable.
44
- def initialize(
45
- initial_interval: 1,
46
- backoff: 2.0,
47
- max_interval: nil,
48
- max_attempts: 0,
49
- non_retriable_errors: []
50
- )
51
- @initial_interval = initial_interval
52
- @backoff = backoff
53
- @max_interval = max_interval
54
- @max_attempts = max_attempts
55
- @non_retriable_errors = non_retriable_errors.map(&:to_s).compact
56
- end
57
-
58
- def validate!
59
- # Retries disabled
60
- return if max_attempts == 1
61
-
62
- # Maximum attempts
63
- raise Invalid, 'Maximum attempts must be specified' unless max_attempts
64
- raise Invalid, 'Maximum attempts cannot be negative' if max_attempts.negative?
65
-
66
- # Initial interval
67
- raise Invalid, 'Initial interval must be specified' unless initial_interval
68
- raise Invalid, 'Initial interval cannot be negative' if initial_interval.negative?
69
- raise Invalid, 'Initial interval must be in whole seconds' unless initial_interval.is_a?(Integer)
70
-
71
- # Backoff coefficient
72
- raise Invalid, 'Backoff coefficient must be specified' unless backoff
73
- raise Invalid, 'Backoff coefficient cannot be less than 1' if backoff < 1
74
-
75
- # Maximum interval
76
- if max_interval
77
- raise Invalid, 'Maximum interval cannot be negative' if max_interval.negative?
78
- raise Invalid, 'Maximum interval cannot be less than initial interval' if max_interval < initial_interval
79
- end
8
+ # @!attribute initial_interval
9
+ # @return [Float] Backoff interval in seconds for the first retry. Default 1.0.
10
+ # @!attribute backoff_coefficient
11
+ # @return [Float] Coefficient to multiply previous backoff interval by to get new interval. Default 2.0.
12
+ # @!attribute max_interval
13
+ # @return [Float, nil] Maximum backoff interval in seconds between retries. Default 100x `initial_interval`.
14
+ # @!attribute max_attempts
15
+ # @return [Integer] Maximum number of attempts. If `0`, the default, there is no maximum.
16
+ # @!attribute non_retryable_error_types
17
+ # @return [Array<String>, nil] List of error types that are not retryable.
18
+ RetryPolicy = Struct.new(
19
+ :initial_interval,
20
+ :backoff_coefficient,
21
+ :max_interval,
22
+ :max_attempts,
23
+ :non_retryable_error_types,
24
+ keyword_init: true
25
+ ) do
26
+ def initialize(*, **kwargs)
27
+ kwargs[:initial_interval] = 1.0 unless kwargs.key?(:initial_interval)
28
+ kwargs[:backoff_coefficient] = 2.0 unless kwargs.key?(:backoff_coefficient)
29
+ kwargs[:max_attempts] = 0 unless kwargs.key?(:max_attempts)
30
+ super
80
31
  end
81
32
 
33
+ # @!visibility private
82
34
  def to_proto
83
- Temporalio::Api::Common::V1::RetryPolicy.new(
84
- initial_interval: Google::Protobuf::Duration.new(seconds: initial_interval),
85
- backoff_coefficient: backoff,
86
- maximum_interval: max_interval ? Google::Protobuf::Duration.new(seconds: max_interval) : nil,
35
+ # @type self: RetryPolicy
36
+ raise 'Initial interval cannot be negative' if initial_interval.negative?
37
+ raise 'Backoff coefficient cannot be less than 1' if backoff_coefficient < 1
38
+ raise 'Max interval cannot be negative' if max_interval&.negative?
39
+ raise 'Max interval cannot be less than initial interval' if max_interval && max_interval < initial_interval
40
+ raise 'Max attempts cannot be negative' if max_attempts.negative?
41
+
42
+ Api::Common::V1::RetryPolicy.new(
43
+ initial_interval: Internal::ProtoUtils.seconds_to_duration(initial_interval),
44
+ backoff_coefficient:,
45
+ maximum_interval: Internal::ProtoUtils.seconds_to_duration(max_interval),
87
46
  maximum_attempts: max_attempts,
88
- non_retryable_error_types: non_retriable_errors,
47
+ non_retryable_error_types:
89
48
  )
90
49
  end
91
50
  end