temporalio 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (585) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +4035 -0
  3. data/Cargo.toml +25 -0
  4. data/Gemfile +20 -0
  5. data/LICENSE +16 -15
  6. data/README.md +455 -195
  7. data/Rakefile +387 -0
  8. data/ext/Cargo.toml +25 -0
  9. data/lib/temporalio/activity/complete_async_error.rb +11 -0
  10. data/lib/temporalio/activity/context.rb +82 -77
  11. data/lib/temporalio/activity/definition.rb +77 -0
  12. data/lib/temporalio/activity/info.rb +42 -46
  13. data/lib/temporalio/activity.rb +49 -65
  14. data/lib/temporalio/api/batch/v1/message.rb +31 -0
  15. data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +93 -0
  16. data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
  17. data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
  18. data/lib/temporalio/api/cloud/identity/v1/message.rb +36 -0
  19. data/lib/temporalio/api/cloud/namespace/v1/message.rb +35 -0
  20. data/lib/temporalio/api/cloud/operation/v1/message.rb +27 -0
  21. data/lib/temporalio/api/cloud/region/v1/message.rb +23 -0
  22. data/lib/temporalio/api/command/v1/message.rb +46 -0
  23. data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
  24. data/lib/temporalio/api/common/v1/message.rb +41 -0
  25. data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
  26. data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
  27. data/lib/temporalio/api/enums/v1/common.rb +26 -0
  28. data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
  29. data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
  30. data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
  31. data/lib/temporalio/api/enums/v1/query.rb +22 -0
  32. data/lib/temporalio/api/enums/v1/reset.rb +23 -0
  33. data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
  34. data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
  35. data/lib/temporalio/api/enums/v1/update.rb +22 -0
  36. data/lib/temporalio/api/enums/v1/workflow.rb +30 -0
  37. data/lib/temporalio/api/errordetails/v1/message.rb +42 -0
  38. data/lib/temporalio/api/export/v1/message.rb +24 -0
  39. data/lib/temporalio/api/failure/v1/message.rb +35 -0
  40. data/lib/temporalio/api/filter/v1/message.rb +27 -0
  41. data/lib/temporalio/api/history/v1/message.rb +90 -0
  42. data/lib/temporalio/api/namespace/v1/message.rb +31 -0
  43. data/lib/temporalio/api/nexus/v1/message.rb +40 -0
  44. data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
  45. data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
  46. data/lib/temporalio/api/operatorservice.rb +3 -0
  47. data/lib/temporalio/api/protocol/v1/message.rb +23 -0
  48. data/lib/temporalio/api/query/v1/message.rb +27 -0
  49. data/lib/temporalio/api/replication/v1/message.rb +26 -0
  50. data/lib/temporalio/api/schedule/v1/message.rb +42 -0
  51. data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
  52. data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
  53. data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
  54. data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
  55. data/lib/temporalio/api/taskqueue/v1/message.rb +45 -0
  56. data/lib/temporalio/api/update/v1/message.rb +33 -0
  57. data/lib/temporalio/api/version/v1/message.rb +26 -0
  58. data/lib/temporalio/api/workflow/v1/message.rb +43 -0
  59. data/lib/temporalio/api/workflowservice/v1/request_response.rb +189 -0
  60. data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
  61. data/lib/temporalio/api/workflowservice.rb +3 -0
  62. data/lib/temporalio/api.rb +13 -0
  63. data/lib/temporalio/cancellation.rb +150 -0
  64. data/lib/temporalio/client/activity_id_reference.rb +32 -0
  65. data/lib/temporalio/client/async_activity_handle.rb +110 -0
  66. data/lib/temporalio/client/connection/cloud_service.rb +648 -0
  67. data/lib/temporalio/client/connection/operator_service.rb +249 -0
  68. data/lib/temporalio/client/connection/service.rb +41 -0
  69. data/lib/temporalio/client/connection/workflow_service.rb +1218 -0
  70. data/lib/temporalio/client/connection.rb +270 -0
  71. data/lib/temporalio/client/interceptor.rb +316 -0
  72. data/lib/temporalio/client/workflow_execution.rb +103 -0
  73. data/lib/temporalio/client/workflow_execution_count.rb +36 -0
  74. data/lib/temporalio/client/workflow_execution_status.rb +18 -0
  75. data/lib/temporalio/client/workflow_handle.rb +380 -177
  76. data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
  77. data/lib/temporalio/client/workflow_update_handle.rb +67 -0
  78. data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
  79. data/lib/temporalio/client.rb +366 -93
  80. data/lib/temporalio/common_enums.rb +24 -0
  81. data/lib/temporalio/converters/data_converter.rb +102 -0
  82. data/lib/temporalio/converters/failure_converter.rb +200 -0
  83. data/lib/temporalio/converters/payload_codec.rb +26 -0
  84. data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
  85. data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
  86. data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
  87. data/lib/temporalio/converters/payload_converter/composite.rb +62 -0
  88. data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
  89. data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
  90. data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
  91. data/lib/temporalio/converters/payload_converter.rb +73 -0
  92. data/lib/temporalio/converters.rb +9 -0
  93. data/lib/temporalio/error/failure.rb +119 -94
  94. data/lib/temporalio/error.rb +147 -0
  95. data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
  96. data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +31 -0
  97. data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
  98. data/lib/temporalio/internal/bridge/api/common/common.rb +26 -0
  99. data/lib/temporalio/internal/bridge/api/core_interface.rb +36 -0
  100. data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
  101. data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +52 -0
  102. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +54 -0
  103. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +30 -0
  104. data/lib/temporalio/internal/bridge/api.rb +3 -0
  105. data/lib/temporalio/internal/bridge/client.rb +90 -0
  106. data/lib/temporalio/internal/bridge/runtime.rb +53 -0
  107. data/lib/temporalio/internal/bridge/testing.rb +46 -0
  108. data/lib/temporalio/internal/bridge/worker.rb +83 -0
  109. data/lib/temporalio/internal/bridge.rb +36 -0
  110. data/lib/temporalio/internal/client/implementation.rb +525 -0
  111. data/lib/temporalio/internal/proto_utils.rb +54 -0
  112. data/lib/temporalio/internal/worker/activity_worker.rb +345 -0
  113. data/lib/temporalio/internal/worker/multi_runner.rb +169 -0
  114. data/lib/temporalio/internal.rb +7 -0
  115. data/lib/temporalio/retry_policy.rb +39 -80
  116. data/lib/temporalio/runtime.rb +259 -13
  117. data/lib/temporalio/scoped_logger.rb +96 -0
  118. data/lib/temporalio/search_attributes.rb +300 -0
  119. data/lib/temporalio/testing/activity_environment.rb +132 -0
  120. data/lib/temporalio/testing/workflow_environment.rb +113 -88
  121. data/lib/temporalio/testing.rb +4 -169
  122. data/lib/temporalio/version.rb +3 -1
  123. data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
  124. data/lib/temporalio/worker/activity_executor/thread_pool.rb +254 -0
  125. data/lib/temporalio/worker/activity_executor.rb +55 -0
  126. data/lib/temporalio/worker/interceptor.rb +88 -0
  127. data/lib/temporalio/worker/tuner.rb +151 -0
  128. data/lib/temporalio/worker.rb +385 -163
  129. data/lib/temporalio/workflow_history.rb +22 -0
  130. data/lib/temporalio.rb +2 -7
  131. data/temporalio.gemspec +20 -39
  132. metadata +131 -712
  133. data/bridge/Cargo.lock +0 -2997
  134. data/bridge/Cargo.toml +0 -29
  135. data/bridge/sdk-core/ARCHITECTURE.md +0 -76
  136. data/bridge/sdk-core/Cargo.toml +0 -2
  137. data/bridge/sdk-core/LICENSE.txt +0 -23
  138. data/bridge/sdk-core/README.md +0 -117
  139. data/bridge/sdk-core/arch_docs/diagrams/README.md +0 -10
  140. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +0 -40
  141. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
  142. data/bridge/sdk-core/arch_docs/sticky_queues.md +0 -51
  143. data/bridge/sdk-core/client/Cargo.toml +0 -40
  144. data/bridge/sdk-core/client/LICENSE.txt +0 -23
  145. data/bridge/sdk-core/client/src/lib.rs +0 -1462
  146. data/bridge/sdk-core/client/src/metrics.rs +0 -174
  147. data/bridge/sdk-core/client/src/raw.rs +0 -932
  148. data/bridge/sdk-core/client/src/retry.rs +0 -763
  149. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +0 -185
  150. data/bridge/sdk-core/core/Cargo.toml +0 -129
  151. data/bridge/sdk-core/core/LICENSE.txt +0 -23
  152. data/bridge/sdk-core/core/benches/workflow_replay.rs +0 -76
  153. data/bridge/sdk-core/core/src/abstractions.rs +0 -355
  154. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +0 -1049
  155. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +0 -221
  156. data/bridge/sdk-core/core/src/core_tests/determinism.rs +0 -270
  157. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +0 -1046
  158. data/bridge/sdk-core/core/src/core_tests/mod.rs +0 -100
  159. data/bridge/sdk-core/core/src/core_tests/queries.rs +0 -893
  160. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +0 -65
  161. data/bridge/sdk-core/core/src/core_tests/workers.rs +0 -257
  162. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +0 -124
  163. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +0 -2433
  164. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +0 -609
  165. data/bridge/sdk-core/core/src/internal_flags.rs +0 -136
  166. data/bridge/sdk-core/core/src/lib.rs +0 -289
  167. data/bridge/sdk-core/core/src/pollers/mod.rs +0 -54
  168. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +0 -297
  169. data/bridge/sdk-core/core/src/protosext/mod.rs +0 -428
  170. data/bridge/sdk-core/core/src/replay/mod.rs +0 -215
  171. data/bridge/sdk-core/core/src/retry_logic.rs +0 -202
  172. data/bridge/sdk-core/core/src/telemetry/log_export.rs +0 -190
  173. data/bridge/sdk-core/core/src/telemetry/metrics.rs +0 -462
  174. data/bridge/sdk-core/core/src/telemetry/mod.rs +0 -423
  175. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +0 -83
  176. data/bridge/sdk-core/core/src/test_help/mod.rs +0 -939
  177. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +0 -536
  178. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +0 -89
  179. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +0 -1278
  180. data/bridge/sdk-core/core/src/worker/activities.rs +0 -557
  181. data/bridge/sdk-core/core/src/worker/client/mocks.rs +0 -107
  182. data/bridge/sdk-core/core/src/worker/client.rs +0 -389
  183. data/bridge/sdk-core/core/src/worker/mod.rs +0 -677
  184. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
  185. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +0 -99
  186. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +0 -1111
  187. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +0 -964
  188. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +0 -294
  189. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -168
  190. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +0 -918
  191. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +0 -137
  192. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +0 -158
  193. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +0 -130
  194. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +0 -1525
  195. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +0 -324
  196. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +0 -179
  197. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -659
  198. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +0 -439
  199. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +0 -435
  200. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +0 -175
  201. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +0 -249
  202. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +0 -85
  203. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +0 -1280
  204. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +0 -269
  205. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -213
  206. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +0 -1305
  207. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +0 -1276
  208. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +0 -128
  209. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +0 -125
  210. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +0 -85
  211. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +0 -117
  212. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +0 -24
  213. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +0 -715
  214. data/bridge/sdk-core/core-api/Cargo.toml +0 -33
  215. data/bridge/sdk-core/core-api/LICENSE.txt +0 -23
  216. data/bridge/sdk-core/core-api/src/errors.rs +0 -62
  217. data/bridge/sdk-core/core-api/src/lib.rs +0 -113
  218. data/bridge/sdk-core/core-api/src/telemetry.rs +0 -141
  219. data/bridge/sdk-core/core-api/src/worker.rs +0 -161
  220. data/bridge/sdk-core/etc/deps.svg +0 -162
  221. data/bridge/sdk-core/etc/dynamic-config.yaml +0 -2
  222. data/bridge/sdk-core/etc/otel-collector-config.yaml +0 -36
  223. data/bridge/sdk-core/etc/prometheus.yaml +0 -6
  224. data/bridge/sdk-core/etc/regen-depgraph.sh +0 -5
  225. data/bridge/sdk-core/fsm/Cargo.toml +0 -18
  226. data/bridge/sdk-core/fsm/LICENSE.txt +0 -23
  227. data/bridge/sdk-core/fsm/README.md +0 -3
  228. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  229. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -23
  230. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +0 -650
  231. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  232. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +0 -18
  233. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  234. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +0 -41
  235. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +0 -14
  236. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +0 -11
  237. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +0 -32
  238. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +0 -31
  239. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +0 -46
  240. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +0 -29
  241. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -12
  242. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +0 -32
  243. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +0 -18
  244. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  245. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +0 -11
  246. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  247. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +0 -11
  248. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  249. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  250. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -23
  251. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +0 -254
  252. data/bridge/sdk-core/fsm/src/lib.rs +0 -2
  253. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  254. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  255. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  256. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  257. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  258. data/bridge/sdk-core/integ-with-otel.sh +0 -7
  259. data/bridge/sdk-core/protos/api_upstream/README.md +0 -9
  260. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
  261. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -9
  262. data/bridge/sdk-core/protos/api_upstream/build/go.mod +0 -7
  263. data/bridge/sdk-core/protos/api_upstream/build/go.sum +0 -5
  264. data/bridge/sdk-core/protos/api_upstream/build/tools.go +0 -29
  265. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +0 -141
  266. data/bridge/sdk-core/protos/api_upstream/go.mod +0 -6
  267. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -89
  268. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +0 -248
  269. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +0 -123
  270. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -47
  271. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -52
  272. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -56
  273. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -170
  274. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -123
  275. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -51
  276. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -50
  277. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -41
  278. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -60
  279. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -59
  280. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -56
  281. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -122
  282. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -108
  283. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -114
  284. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -56
  285. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +0 -787
  286. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -99
  287. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -124
  288. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -80
  289. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -57
  290. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +0 -61
  291. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -55
  292. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -379
  293. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -63
  294. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -108
  295. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +0 -111
  296. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +0 -59
  297. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -146
  298. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -1199
  299. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -415
  300. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +0 -63
  301. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -79
  302. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -80
  303. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -78
  304. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +0 -16
  305. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +0 -31
  306. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -31
  307. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -270
  308. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -305
  309. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -35
  310. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +0 -38
  311. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +0 -13
  312. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
  313. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -63
  314. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -90
  315. data/bridge/sdk-core/rustfmt.toml +0 -1
  316. data/bridge/sdk-core/sdk/Cargo.toml +0 -48
  317. data/bridge/sdk-core/sdk/LICENSE.txt +0 -23
  318. data/bridge/sdk-core/sdk/src/activity_context.rs +0 -230
  319. data/bridge/sdk-core/sdk/src/app_data.rs +0 -37
  320. data/bridge/sdk-core/sdk/src/interceptors.rs +0 -50
  321. data/bridge/sdk-core/sdk/src/lib.rs +0 -861
  322. data/bridge/sdk-core/sdk/src/payload_converter.rs +0 -11
  323. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +0 -295
  324. data/bridge/sdk-core/sdk/src/workflow_context.rs +0 -694
  325. data/bridge/sdk-core/sdk/src/workflow_future.rs +0 -500
  326. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +0 -33
  327. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +0 -23
  328. data/bridge/sdk-core/sdk-core-protos/build.rs +0 -142
  329. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +0 -7
  330. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +0 -557
  331. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +0 -234
  332. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +0 -2088
  333. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +0 -48
  334. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +0 -14
  335. data/bridge/sdk-core/test-utils/Cargo.toml +0 -38
  336. data/bridge/sdk-core/test-utils/src/canned_histories.rs +0 -1389
  337. data/bridge/sdk-core/test-utils/src/histfetch.rs +0 -28
  338. data/bridge/sdk-core/test-utils/src/lib.rs +0 -709
  339. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +0 -50
  340. data/bridge/sdk-core/test-utils/src/workflows.rs +0 -29
  341. data/bridge/sdk-core/tests/fuzzy_workflow.rs +0 -130
  342. data/bridge/sdk-core/tests/heavy_tests.rs +0 -265
  343. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +0 -36
  344. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +0 -150
  345. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +0 -223
  346. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +0 -239
  347. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -90
  348. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +0 -314
  349. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +0 -151
  350. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +0 -902
  351. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
  352. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -60
  353. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -51
  354. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -51
  355. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -64
  356. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -47
  357. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -669
  358. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -54
  359. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -92
  360. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +0 -228
  361. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +0 -94
  362. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -171
  363. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +0 -85
  364. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -120
  365. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +0 -77
  366. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +0 -596
  367. data/bridge/sdk-core/tests/main.rs +0 -103
  368. data/bridge/sdk-core/tests/runner.rs +0 -132
  369. data/bridge/sdk-core/tests/wf_input_replay.rs +0 -32
  370. data/bridge/src/connection.rs +0 -202
  371. data/bridge/src/lib.rs +0 -494
  372. data/bridge/src/runtime.rs +0 -54
  373. data/bridge/src/test_server.rs +0 -153
  374. data/bridge/src/worker.rs +0 -197
  375. data/ext/Rakefile +0 -9
  376. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +0 -14
  377. data/lib/gen/temporal/api/batch/v1/message_pb.rb +0 -50
  378. data/lib/gen/temporal/api/command/v1/message_pb.rb +0 -160
  379. data/lib/gen/temporal/api/common/v1/message_pb.rb +0 -73
  380. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +0 -33
  381. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +0 -37
  382. data/lib/gen/temporal/api/enums/v1/common_pb.rb +0 -42
  383. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +0 -68
  384. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +0 -79
  385. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +0 -37
  386. data/lib/gen/temporal/api/enums/v1/query_pb.rb +0 -31
  387. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +0 -24
  388. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +0 -28
  389. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +0 -30
  390. data/lib/gen/temporal/api/enums/v1/update_pb.rb +0 -25
  391. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +0 -89
  392. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +0 -84
  393. data/lib/gen/temporal/api/failure/v1/message_pb.rb +0 -83
  394. data/lib/gen/temporal/api/filter/v1/message_pb.rb +0 -40
  395. data/lib/gen/temporal/api/history/v1/message_pb.rb +0 -498
  396. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +0 -64
  397. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +0 -88
  398. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +0 -20
  399. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +0 -30
  400. data/lib/gen/temporal/api/query/v1/message_pb.rb +0 -38
  401. data/lib/gen/temporal/api/replication/v1/message_pb.rb +0 -37
  402. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +0 -149
  403. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +0 -23
  404. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +0 -73
  405. data/lib/gen/temporal/api/testservice/v1/request_response_pb.rb +0 -49
  406. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +0 -21
  407. data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -72
  408. data/lib/gen/temporal/api/version/v1/message_pb.rb +0 -41
  409. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +0 -111
  410. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +0 -798
  411. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +0 -20
  412. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +0 -62
  413. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +0 -61
  414. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +0 -61
  415. data/lib/gen/temporal/sdk/core/common/common_pb.rb +0 -26
  416. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +0 -40
  417. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +0 -31
  418. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +0 -171
  419. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +0 -200
  420. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +0 -41
  421. data/lib/temporalio/bridge/connect_options.rb +0 -15
  422. data/lib/temporalio/bridge/error.rb +0 -8
  423. data/lib/temporalio/bridge/retry_config.rb +0 -24
  424. data/lib/temporalio/bridge/tls_options.rb +0 -19
  425. data/lib/temporalio/bridge.rb +0 -14
  426. data/lib/temporalio/client/implementation.rb +0 -340
  427. data/lib/temporalio/connection/retry_config.rb +0 -44
  428. data/lib/temporalio/connection/service.rb +0 -20
  429. data/lib/temporalio/connection/test_service.rb +0 -92
  430. data/lib/temporalio/connection/tls_options.rb +0 -51
  431. data/lib/temporalio/connection/workflow_service.rb +0 -731
  432. data/lib/temporalio/connection.rb +0 -86
  433. data/lib/temporalio/data_converter.rb +0 -191
  434. data/lib/temporalio/error/workflow_failure.rb +0 -19
  435. data/lib/temporalio/errors.rb +0 -40
  436. data/lib/temporalio/failure_converter/base.rb +0 -26
  437. data/lib/temporalio/failure_converter/basic.rb +0 -319
  438. data/lib/temporalio/failure_converter.rb +0 -7
  439. data/lib/temporalio/interceptor/activity_inbound.rb +0 -22
  440. data/lib/temporalio/interceptor/activity_outbound.rb +0 -24
  441. data/lib/temporalio/interceptor/chain.rb +0 -28
  442. data/lib/temporalio/interceptor/client.rb +0 -127
  443. data/lib/temporalio/interceptor.rb +0 -22
  444. data/lib/temporalio/payload_codec/base.rb +0 -32
  445. data/lib/temporalio/payload_converter/base.rb +0 -24
  446. data/lib/temporalio/payload_converter/bytes.rb +0 -27
  447. data/lib/temporalio/payload_converter/composite.rb +0 -49
  448. data/lib/temporalio/payload_converter/encoding_base.rb +0 -35
  449. data/lib/temporalio/payload_converter/json.rb +0 -26
  450. data/lib/temporalio/payload_converter/nil.rb +0 -26
  451. data/lib/temporalio/payload_converter.rb +0 -14
  452. data/lib/temporalio/retry_state.rb +0 -35
  453. data/lib/temporalio/testing/time_skipping_handle.rb +0 -32
  454. data/lib/temporalio/testing/time_skipping_interceptor.rb +0 -23
  455. data/lib/temporalio/timeout_type.rb +0 -29
  456. data/lib/temporalio/worker/activity_runner.rb +0 -114
  457. data/lib/temporalio/worker/activity_worker.rb +0 -164
  458. data/lib/temporalio/worker/reactor.rb +0 -46
  459. data/lib/temporalio/worker/runner.rb +0 -63
  460. data/lib/temporalio/worker/sync_worker.rb +0 -124
  461. data/lib/temporalio/worker/thread_pool_executor.rb +0 -51
  462. data/lib/temporalio/workflow/async.rb +0 -46
  463. data/lib/temporalio/workflow/execution_info.rb +0 -54
  464. data/lib/temporalio/workflow/execution_status.rb +0 -36
  465. data/lib/temporalio/workflow/future.rb +0 -138
  466. data/lib/temporalio/workflow/id_reuse_policy.rb +0 -36
  467. data/lib/temporalio/workflow/info.rb +0 -76
  468. data/lib/temporalio/workflow/query_reject_condition.rb +0 -33
  469. data/lib/thermite_patch.rb +0 -33
  470. data/sig/async.rbs +0 -17
  471. data/sig/protobuf.rbs +0 -16
  472. data/sig/protos/dependencies/gogoproto/gogo.rbs +0 -914
  473. data/sig/protos/google/protobuf/any.rbs +0 -157
  474. data/sig/protos/google/protobuf/descriptor.rbs +0 -2825
  475. data/sig/protos/google/protobuf/duration.rbs +0 -114
  476. data/sig/protos/google/protobuf/empty.rbs +0 -36
  477. data/sig/protos/google/protobuf/timestamp.rbs +0 -145
  478. data/sig/protos/google/protobuf/wrappers.rbs +0 -358
  479. data/sig/protos/temporal/api/batch/v1/message.rbs +0 -300
  480. data/sig/protos/temporal/api/command/v1/message.rbs +0 -1399
  481. data/sig/protos/temporal/api/common/v1/message.rbs +0 -528
  482. data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +0 -79
  483. data/sig/protos/temporal/api/enums/v1/command_type.rbs +0 -68
  484. data/sig/protos/temporal/api/enums/v1/common.rbs +0 -118
  485. data/sig/protos/temporal/api/enums/v1/event_type.rbs +0 -264
  486. data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +0 -277
  487. data/sig/protos/temporal/api/enums/v1/namespace.rbs +0 -108
  488. data/sig/protos/temporal/api/enums/v1/query.rbs +0 -81
  489. data/sig/protos/temporal/api/enums/v1/reset.rbs +0 -44
  490. data/sig/protos/temporal/api/enums/v1/schedule.rbs +0 -72
  491. data/sig/protos/temporal/api/enums/v1/task_queue.rbs +0 -92
  492. data/sig/protos/temporal/api/enums/v1/update.rbs +0 -64
  493. data/sig/protos/temporal/api/enums/v1/workflow.rbs +0 -371
  494. data/sig/protos/temporal/api/errordetails/v1/message.rbs +0 -551
  495. data/sig/protos/temporal/api/failure/v1/message.rbs +0 -581
  496. data/sig/protos/temporal/api/filter/v1/message.rbs +0 -171
  497. data/sig/protos/temporal/api/history/v1/message.rbs +0 -4609
  498. data/sig/protos/temporal/api/namespace/v1/message.rbs +0 -410
  499. data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +0 -643
  500. data/sig/protos/temporal/api/operatorservice/v1/service.rbs +0 -17
  501. data/sig/protos/temporal/api/protocol/v1/message.rbs +0 -84
  502. data/sig/protos/temporal/api/query/v1/message.rbs +0 -182
  503. data/sig/protos/temporal/api/replication/v1/message.rbs +0 -148
  504. data/sig/protos/temporal/api/schedule/v1/message.rbs +0 -1488
  505. data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +0 -110
  506. data/sig/protos/temporal/api/taskqueue/v1/message.rbs +0 -486
  507. data/sig/protos/temporal/api/testservice/v1/request_response.rbs +0 -249
  508. data/sig/protos/temporal/api/testservice/v1/service.rbs +0 -15
  509. data/sig/protos/temporal/api/update/v1/message.rbs +0 -489
  510. data/sig/protos/temporal/api/version/v1/message.rbs +0 -184
  511. data/sig/protos/temporal/api/workflow/v1/message.rbs +0 -824
  512. data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +0 -7250
  513. data/sig/protos/temporal/api/workflowservice/v1/service.rbs +0 -22
  514. data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +0 -380
  515. data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +0 -386
  516. data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +0 -323
  517. data/sig/protos/temporal/sdk/core/common/common.rbs +0 -62
  518. data/sig/protos/temporal/sdk/core/core_interface.rbs +0 -101
  519. data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +0 -119
  520. data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +0 -1473
  521. data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +0 -1784
  522. data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +0 -180
  523. data/sig/ruby.rbs +0 -12
  524. data/sig/temporalio/activity/context.rbs +0 -29
  525. data/sig/temporalio/activity/info.rbs +0 -43
  526. data/sig/temporalio/activity.rbs +0 -19
  527. data/sig/temporalio/bridge/connect_options.rbs +0 -19
  528. data/sig/temporalio/bridge/error.rbs +0 -8
  529. data/sig/temporalio/bridge/retry_config.rbs +0 -21
  530. data/sig/temporalio/bridge/tls_options.rbs +0 -17
  531. data/sig/temporalio/bridge.rbs +0 -71
  532. data/sig/temporalio/client/implementation.rbs +0 -38
  533. data/sig/temporalio/client/workflow_handle.rbs +0 -41
  534. data/sig/temporalio/client.rbs +0 -35
  535. data/sig/temporalio/connection/retry_config.rbs +0 -37
  536. data/sig/temporalio/connection/service.rbs +0 -14
  537. data/sig/temporalio/connection/test_service.rbs +0 -13
  538. data/sig/temporalio/connection/tls_options.rbs +0 -43
  539. data/sig/temporalio/connection/workflow_service.rbs +0 -48
  540. data/sig/temporalio/connection.rbs +0 -30
  541. data/sig/temporalio/data_converter.rbs +0 -35
  542. data/sig/temporalio/error/failure.rbs +0 -121
  543. data/sig/temporalio/error/workflow_failure.rbs +0 -9
  544. data/sig/temporalio/errors.rbs +0 -36
  545. data/sig/temporalio/failure_converter/base.rbs +0 -12
  546. data/sig/temporalio/failure_converter/basic.rbs +0 -86
  547. data/sig/temporalio/failure_converter.rbs +0 -5
  548. data/sig/temporalio/interceptor/activity_inbound.rbs +0 -21
  549. data/sig/temporalio/interceptor/activity_outbound.rbs +0 -10
  550. data/sig/temporalio/interceptor/chain.rbs +0 -24
  551. data/sig/temporalio/interceptor/client.rbs +0 -148
  552. data/sig/temporalio/interceptor.rbs +0 -6
  553. data/sig/temporalio/payload_codec/base.rbs +0 -12
  554. data/sig/temporalio/payload_converter/base.rbs +0 -12
  555. data/sig/temporalio/payload_converter/bytes.rbs +0 -9
  556. data/sig/temporalio/payload_converter/composite.rbs +0 -19
  557. data/sig/temporalio/payload_converter/encoding_base.rbs +0 -14
  558. data/sig/temporalio/payload_converter/json.rbs +0 -9
  559. data/sig/temporalio/payload_converter/nil.rbs +0 -9
  560. data/sig/temporalio/payload_converter.rbs +0 -5
  561. data/sig/temporalio/retry_policy.rbs +0 -25
  562. data/sig/temporalio/retry_state.rbs +0 -20
  563. data/sig/temporalio/runtime.rbs +0 -12
  564. data/sig/temporalio/testing/time_skipping_handle.rbs +0 -15
  565. data/sig/temporalio/testing/time_skipping_interceptor.rbs +0 -13
  566. data/sig/temporalio/testing/workflow_environment.rbs +0 -22
  567. data/sig/temporalio/testing.rbs +0 -35
  568. data/sig/temporalio/timeout_type.rbs +0 -15
  569. data/sig/temporalio/version.rbs +0 -3
  570. data/sig/temporalio/worker/activity_runner.rbs +0 -35
  571. data/sig/temporalio/worker/activity_worker.rbs +0 -44
  572. data/sig/temporalio/worker/reactor.rbs +0 -22
  573. data/sig/temporalio/worker/runner.rbs +0 -21
  574. data/sig/temporalio/worker/sync_worker.rbs +0 -23
  575. data/sig/temporalio/worker/thread_pool_executor.rbs +0 -23
  576. data/sig/temporalio/worker.rbs +0 -46
  577. data/sig/temporalio/workflow/async.rbs +0 -9
  578. data/sig/temporalio/workflow/execution_info.rbs +0 -55
  579. data/sig/temporalio/workflow/execution_status.rbs +0 -21
  580. data/sig/temporalio/workflow/future.rbs +0 -40
  581. data/sig/temporalio/workflow/id_reuse_policy.rbs +0 -15
  582. data/sig/temporalio/workflow/info.rbs +0 -55
  583. data/sig/temporalio/workflow/query_reject_condition.rbs +0 -14
  584. data/sig/temporalio.rbs +0 -2
  585. data/sig/thermite_patch.rbs +0 -15
@@ -1,204 +1,426 @@
1
- require 'async'
2
- require 'temporalio/bridge'
3
- require 'temporalio/data_converter'
4
- require 'temporalio/runtime'
5
- require 'temporalio/worker/activity_worker'
6
- require 'temporalio/worker/runner'
7
- require 'temporalio/worker/sync_worker'
8
- require 'temporalio/worker/thread_pool_executor'
1
+ # frozen_string_literal: true
2
+
3
+ require 'temporalio/activity'
4
+ require 'temporalio/cancellation'
5
+ require 'temporalio/client'
6
+ require 'temporalio/error'
7
+ require 'temporalio/internal/bridge'
8
+ require 'temporalio/internal/bridge/worker'
9
+ require 'temporalio/internal/worker/activity_worker'
10
+ require 'temporalio/internal/worker/multi_runner'
11
+ require 'temporalio/worker/activity_executor'
12
+ require 'temporalio/worker/interceptor'
13
+ require 'temporalio/worker/tuner'
9
14
 
10
15
  module Temporalio
11
- # Worker to process activities.
16
+ # Worker for processing activities and workflows on a task queue.
12
17
  #
13
- # Once created, workers can be run and shutdown explicitly via {#run} and {#shutdown}.
18
+ # Workers are created for a task queue and the items they can run. Then {run} is used for running a single worker, or
19
+ # {run_all} is used for a collection of workers. These can wait until a block is complete or a {Cancellation} is
20
+ # canceled.
14
21
  class Worker
15
- # Run multiple workers and wait for them to be shut down.
16
- #
17
- # This will not return until shutdown is complete (and all running activities in all workers
18
- # finished) and will raise if any of the workers raises a fatal error.
19
- #
20
- # @param workers [Array<Temporalio::Worker>] A list of the workers to be run.
21
- # @param shutdown_signals [Array<String>] A list of process signals for the worker to stop on.
22
- # This argument can not be used with a custom block.
22
+ # Options as returned from {options} for `**to_h`` splat use in {initialize}. See {initialize} for details.
23
+ Options = Struct.new(
24
+ :client,
25
+ :task_queue,
26
+ :activities,
27
+ :activity_executors,
28
+ :tuner,
29
+ :interceptors,
30
+ :build_id,
31
+ :identity,
32
+ :logger,
33
+ :max_cached_workflows,
34
+ :max_concurrent_workflow_task_polls,
35
+ :nonsticky_to_sticky_poll_ratio,
36
+ :max_concurrent_activity_task_polls,
37
+ :no_remote_activities,
38
+ :sticky_queue_schedule_to_start_timeout,
39
+ :max_heartbeat_throttle_interval,
40
+ :default_heartbeat_throttle_interval,
41
+ :max_activities_per_second,
42
+ :max_task_queue_activities_per_second,
43
+ :graceful_shutdown_period,
44
+ :use_worker_versioning,
45
+ keyword_init: true
46
+ )
47
+
48
+ # @return [String] Memoized default build ID. This default value is built as a checksum of all of the loaded Ruby
49
+ # source files in `$LOADED_FEATURES`. Users may prefer to set the build ID to a better representation of the
50
+ # source.
51
+ def self.default_build_id
52
+ @default_build_id ||= _load_default_build_id
53
+ end
54
+
55
+ # @!visibility private
56
+ def self._load_default_build_id
57
+ # The goal is to get a hash of runtime code, both Temporal's and the
58
+ # user's. After all options were explored, we have decided to default to
59
+ # hashing all bytecode of required files. This means later/dynamic require
60
+ # won't be accounted for because this is memoized. It also means the
61
+ # tiniest code change will affect this, which is what we want since this
62
+ # is meant to be a "binary checksum". We have chosen to use MD5 for speed,
63
+ # similarity with other SDKs, and because security is not a factor.
64
+ require 'digest'
65
+
66
+ saw_bridge = false
67
+ build_id = $LOADED_FEATURES.each_with_object(Digest::MD5.new) do |file, digest|
68
+ saw_bridge = true if file.include?('temporalio_bridge.')
69
+ digest.update(File.read(file)) if File.file?(file)
70
+ end.hexdigest
71
+ raise 'Temporal bridge library not in $LOADED_FEATURES, unable to calculate default build ID' unless saw_bridge
72
+
73
+ build_id
74
+ end
75
+
76
+ # Run all workers until cancellation or optional block completes. When the cancellation or block is complete, the
77
+ # workers are shut down. This will return the block result if everything successful or raise an error if not. See
78
+ # {run} for details on how worker shutdown works.
23
79
  #
24
- # @yield Optionally you can provide a block by the end of which all the workers will be shut
25
- # down. Any errors raised from this block will be re-raised by this method.
26
- def self.run(*workers, shutdown_signals: [], &block)
27
- unless shutdown_signals.empty?
28
- if block
29
- raise ArgumentError, 'Temporalio::Worker.run accepts :shutdown_signals or a block, but not both'
30
- end
80
+ # @param workers [Array<Worker>] Workers to run.
81
+ # @param cancellation [Cancellation] Cancellation that can be canceled to shut down all workers.
82
+ # @param shutdown_signals [Array] Signals to trap and cause worker shutdown.
83
+ # @param raise_in_block_on_shutdown [Exception, nil] Exception to {::Thread.raise} or {::Fiber.raise} if a block is
84
+ # present and still running on shutdown. If nil, `raise` is not used.
85
+ # @param wait_block_complete [Boolean] If block given and shutdown caused by something else (e.g. cancellation
86
+ # canceled), whether to wait on the block to complete before returning.
87
+ # @yield Optional block. This will be run in a new background thread or fiber. Workers will shut down upon
88
+ # completion of this and, assuming no other failures, return/bubble success/exception of the block.
89
+ # @return [Object] Return value of the block or nil of no block given.
90
+ def self.run_all(
91
+ *workers,
92
+ cancellation: Cancellation.new,
93
+ shutdown_signals: [],
94
+ raise_in_block_on_shutdown: Error::CanceledError.new('Workers finished'),
95
+ wait_block_complete: true,
96
+ &block
97
+ )
98
+ # Confirm there is at least one and they are all workers
99
+ raise ArgumentError, 'At least one worker required' if workers.empty?
100
+ raise ArgumentError, 'Not all parameters are workers' unless workers.all? { |w| w.is_a?(Worker) }
101
+
102
+ Internal::Bridge.assert_fiber_compatibility!
103
+
104
+ # Start the multi runner
105
+ runner = Internal::Worker::MultiRunner.new(workers:, shutdown_signals:)
31
106
 
32
- signal_queue = Queue.new
107
+ # Apply block
108
+ runner.apply_thread_or_fiber_block(&block)
33
109
 
34
- shutdown_signals.each do |signal|
35
- Signal.trap(signal) { signal_queue.close }
110
+ # Reuse first worker logger
111
+ logger = workers.first&.options&.logger or raise # Help steep
112
+
113
+ # On cancel, initiate shutdown
114
+ cancellation.add_cancel_callback do
115
+ logger.info('Cancel invoked, beginning worker shutdown')
116
+ runner.initiate_shutdown
117
+ end
118
+
119
+ # Poller loop, run until all pollers shut down
120
+ first_error = nil
121
+ block_result = nil
122
+ loop do
123
+ event = runner.next_event
124
+ case event
125
+ when Internal::Worker::MultiRunner::Event::PollSuccess
126
+ # Successful poll
127
+ event.worker._on_poll_bytes(event.worker_type, event.bytes)
128
+ when Internal::Worker::MultiRunner::Event::PollFailure
129
+ # Poll failure, this causes shutdown of all workers
130
+ logger.error('Poll failure (beginning worker shutdown if not alaredy occurring)')
131
+ logger.error(event.error)
132
+ first_error ||= event.error
133
+ runner.initiate_shutdown
134
+ when Internal::Worker::MultiRunner::Event::PollerShutDown
135
+ # Individual poller shut down. Nothing to do here until we support
136
+ # worker status or something.
137
+ when Internal::Worker::MultiRunner::Event::AllPollersShutDown
138
+ # This is where we break the loop, no more polling can happen
139
+ break
140
+ when Internal::Worker::MultiRunner::Event::BlockSuccess
141
+ logger.info('Block completed, beginning worker shutdown')
142
+ block_result = event
143
+ runner.initiate_shutdown
144
+ when Internal::Worker::MultiRunner::Event::BlockFailure
145
+ logger.error('Block failure (beginning worker shutdown)')
146
+ logger.error(event.error)
147
+ block_result = event
148
+ first_error ||= event.error
149
+ runner.initiate_shutdown
150
+ when Internal::Worker::MultiRunner::Event::ShutdownSignalReceived
151
+ logger.info('Signal received, beginning worker shutdown')
152
+ runner.initiate_shutdown
153
+ else
154
+ raise "Unexpected event: #{event}"
36
155
  end
156
+ end
37
157
 
38
- block = -> { signal_queue.pop }
158
+ # Now that all pollers have stopped, let's wait for all to complete
159
+ begin
160
+ runner.wait_complete_and_finalize_shutdown
161
+ rescue StandardError => e
162
+ logger.warn('Failed waiting and finalizing')
163
+ logger.warn(e)
164
+ end
165
+
166
+ # If there was a block but not a result yet, we want to raise if that is
167
+ # wanted, and wait if that is wanted
168
+ if block_given? && block_result.nil?
169
+ runner.raise_in_thread_or_fiber_block(raise_in_block_on_shutdown) unless raise_in_block_on_shutdown.nil?
170
+ if wait_block_complete
171
+ event = runner.next_event
172
+ case event
173
+ when Internal::Worker::MultiRunner::Event::BlockSuccess
174
+ logger.info('Block completed (after worker shutdown)')
175
+ block_result = event
176
+ when Internal::Worker::MultiRunner::Event::BlockFailure
177
+ logger.error('Block failure (after worker shutdown)')
178
+ logger.error(event.error)
179
+ block_result = event
180
+ first_error ||= event.error
181
+ when Internal::Worker::MultiRunner::Event::ShutdownSignalReceived
182
+ # Do nothing, waiting for block
183
+ else
184
+ raise "Unexpected event: #{event}"
185
+ end
186
+ end
39
187
  end
40
188
 
41
- Runner.new(*workers).run(&block)
189
+ # If there was an shutdown-causing error, we raise that
190
+ if !first_error.nil?
191
+ raise first_error
192
+ elsif block_result.is_a?(Internal::Worker::MultiRunner::Event::BlockSuccess)
193
+ block_result.result
194
+ end
42
195
  end
43
196
 
44
- # Create a worker to process activities.
45
- #
46
- # @param connection [Temporalio::Connection] A connection to be used for this worker.
47
- # @param namespace [String] A namespace.
48
- # @param task_queue [String] A task queue.
49
- # @param activities [Array<Class>] A list of activities (subclasses of {Temporalio::Activity}).
50
- # @param data_converter [Temporalio::DataConverter] Data converter to use for all data conversions
51
- # to/from payloads.
52
- # @param activity_executor [ThreadPoolExecutor] Concurrent executor for all activities. Defaults
53
- # to a {ThreadPoolExecutor} with `:max_concurrent_activities` available threads.
54
- # @param interceptors [Array<Temporalio::Interceptor::ActivityInbound, Temporalio::Interceptor::ActivityOutbound>]
55
- # Collection of interceptors for this worker.
56
- # @param max_concurrent_activities [Integer] Number of concurrently running activities.
57
- # @param graceful_shutdown_timeout [Integer] Amount of time (in seconds) activities are given
58
- # after a shutdown to complete before they are cancelled. A default value of `nil` means that
59
- # activities are never cancelled when handling a shutdown.
197
+ # @return [Options] Frozen options for this client which has the same attributes as {initialize}.
198
+ attr_reader :options
199
+
200
+ # Create a new worker. At least one activity or workflow must be present.
60
201
  #
61
- # @raise [ArgumentError] When no activities have been provided.
202
+ # @param client [Client] Client for this worker.
203
+ # @param task_queue [String] Task queue for this worker.
204
+ # @param activities [Array<Activity, Class<Activity>, Activity::Definition>] Activities for this worker.
205
+ # @param activity_executors [Hash<Symbol, Worker::ActivityExecutor>] Executors that activities can run within.
206
+ # @param tuner [Tuner] Tuner that controls the amount of concurrent activities/workflows that run at a time.
207
+ # @param interceptors [Array<Interceptor>] Interceptors specific to this worker. Note, interceptors set on the
208
+ # client that include the {Interceptor} module are automatically included here, so no need to specify them again.
209
+ # @param build_id [String] Unique identifier for the current runtime. This is best set as a unique value
210
+ # representing all code and should change only when code does. This can be something like a git commit hash. If
211
+ # unset, default is hash of known Ruby code.
212
+ # @param identity [String, nil] Override the identity for this worker. If unset, client identity is used.
213
+ # @param max_cached_workflows [Integer] Number of workflows held in cache for use by sticky task queue. If set to 0,
214
+ # workflow caching and sticky queuing are disabled.
215
+ # @param max_concurrent_workflow_task_polls [Integer] Maximum number of concurrent poll workflow task requests we
216
+ # will perform at a time on this worker's task queue.
217
+ # @param nonsticky_to_sticky_poll_ratio [Float] `max_concurrent_workflow_task_polls`` * this number = the number of
218
+ # max pollers that will be allowed for the nonsticky queue when sticky tasks are enabled. If both defaults are
219
+ # used, the sticky queue will allow 4 max pollers while the nonsticky queue will allow one. The minimum for either
220
+ # poller is 1, so if `max_concurrent_workflow_task_polls` is 1 and sticky queues are enabled, there will be 2
221
+ # concurrent polls.
222
+ # @param max_concurrent_activity_task_polls [Integer] Maximum number of concurrent poll activity task requests we
223
+ # will perform at a time on this worker's task queue.
224
+ # @param no_remote_activities [Boolean] If true, this worker will only handle workflow tasks and local activities,
225
+ # it will not poll for activity tasks.
226
+ # @param sticky_queue_schedule_to_start_timeout [Float] How long a workflow task is allowed to sit on the sticky
227
+ # queue before it is timed out and moved to the non-sticky queue where it may be picked up by any worker.
228
+ # @param max_heartbeat_throttle_interval [Float] Longest interval for throttling activity heartbeats.
229
+ # @param default_heartbeat_throttle_interval [Float] Default interval for throttling activity heartbeats in case
230
+ # per-activity heartbeat timeout is unset. Otherwise, it's the per-activity heartbeat timeout * 0.8.
231
+ # @param max_activities_per_second [Float, nil] Limits the number of activities per second that this worker will
232
+ # process. The worker will not poll for new activities if by doing so it might receive and execute an activity
233
+ # which would cause it to exceed this limit.
234
+ # @param max_task_queue_activities_per_second [Float, nil] Sets the maximum number of activities per second the task
235
+ # queue will dispatch, controlled server-side. Note that this only takes effect upon an activity poll request. If
236
+ # multiple workers on the same queue have different values set, they will thrash with the last poller winning.
237
+ # @param graceful_shutdown_period [Float] Amount of time after shutdown is called that activities are given to
238
+ # complete before their tasks are canceled.
239
+ # @param use_worker_versioning [Boolean] If true, the `build_id` argument must be specified, and this worker opts
240
+ # into the worker versioning feature. This ensures it only receives workflow tasks for workflows which it claims
241
+ # to be compatible with. For more information, see https://docs.temporal.io/workers#worker-versioning.
62
242
  def initialize(
63
- connection,
64
- namespace,
65
- task_queue,
243
+ client:,
244
+ task_queue:,
66
245
  activities: [],
67
- data_converter: Temporalio::DataConverter.new,
68
- activity_executor: nil,
246
+ activity_executors: ActivityExecutor.defaults,
247
+ tuner: Tuner.create_fixed,
69
248
  interceptors: [],
70
- max_concurrent_activities: 100,
71
- graceful_shutdown_timeout: nil
249
+ build_id: Worker.default_build_id,
250
+ identity: nil,
251
+ logger: client.options.logger,
252
+ max_cached_workflows: 1000,
253
+ max_concurrent_workflow_task_polls: 5,
254
+ nonsticky_to_sticky_poll_ratio: 0.2,
255
+ max_concurrent_activity_task_polls: 5,
256
+ no_remote_activities: false,
257
+ sticky_queue_schedule_to_start_timeout: 10,
258
+ max_heartbeat_throttle_interval: 60,
259
+ default_heartbeat_throttle_interval: 30,
260
+ max_activities_per_second: nil,
261
+ max_task_queue_activities_per_second: nil,
262
+ graceful_shutdown_period: 0,
263
+ use_worker_versioning: false
72
264
  )
73
- @started = false
74
- @shutdown = false
75
- @mutex = Mutex.new
76
- @runtime = Temporalio::Runtime.instance
77
- @activity_executor = activity_executor || ThreadPoolExecutor.new(max_concurrent_activities)
78
- @core_worker = Temporalio::Bridge::Worker.create(
79
- @runtime.core_runtime,
80
- connection.core_connection,
81
- namespace,
82
- task_queue,
83
- 0, # maxCachedWorkflows disabled temporarily
84
- # FIXME: expose enable_non_local_activities
85
- activities.empty?,
265
+ # TODO(cretz): Remove when workflows come about
266
+ raise ArgumentError, 'Must have at least one activity' if activities.empty?
267
+
268
+ @options = Options.new(
269
+ client:,
270
+ task_queue:,
271
+ activities:,
272
+ activity_executors:,
273
+ tuner:,
274
+ interceptors:,
275
+ build_id:,
276
+ identity:,
277
+ logger:,
278
+ max_cached_workflows:,
279
+ max_concurrent_workflow_task_polls:,
280
+ nonsticky_to_sticky_poll_ratio:,
281
+ max_concurrent_activity_task_polls:,
282
+ no_remote_activities:,
283
+ sticky_queue_schedule_to_start_timeout:,
284
+ max_heartbeat_throttle_interval:,
285
+ default_heartbeat_throttle_interval:,
286
+ max_activities_per_second:,
287
+ max_task_queue_activities_per_second:,
288
+ graceful_shutdown_period:,
289
+ use_worker_versioning:
290
+ ).freeze
291
+
292
+ # Create the bridge worker
293
+ @bridge_worker = Internal::Bridge::Worker.new(
294
+ client.connection._core_client,
295
+ Internal::Bridge::Worker::Options.new(
296
+ activity: !activities.empty?,
297
+ workflow: false,
298
+ namespace: client.namespace,
299
+ task_queue:,
300
+ tuner: Internal::Bridge::Worker::TunerOptions.new(
301
+ workflow_slot_supplier: to_bridge_slot_supplier_options(tuner.workflow_slot_supplier),
302
+ activity_slot_supplier: to_bridge_slot_supplier_options(tuner.activity_slot_supplier),
303
+ local_activity_slot_supplier: to_bridge_slot_supplier_options(tuner.local_activity_slot_supplier)
304
+ ),
305
+ build_id:,
306
+ identity_override: identity,
307
+ max_cached_workflows:,
308
+ max_concurrent_workflow_task_polls:,
309
+ nonsticky_to_sticky_poll_ratio:,
310
+ max_concurrent_activity_task_polls:,
311
+ no_remote_activities:,
312
+ sticky_queue_schedule_to_start_timeout:,
313
+ max_heartbeat_throttle_interval:,
314
+ default_heartbeat_throttle_interval:,
315
+ max_worker_activities_per_second: max_activities_per_second,
316
+ max_task_queue_activities_per_second:,
317
+ graceful_shutdown_period:,
318
+ use_worker_versioning:
319
+ )
86
320
  )
87
- sync_worker = Worker::SyncWorker.new(@core_worker)
88
- @activity_worker =
89
- unless activities.empty?
90
- Worker::ActivityWorker.new(
91
- task_queue,
92
- sync_worker,
93
- activities,
94
- data_converter,
95
- interceptors,
96
- @activity_executor,
97
- graceful_shutdown_timeout,
98
- )
99
- end
100
321
 
101
- unless @activity_worker
102
- raise ArgumentError, 'At least one activity must be specified'
103
- end
322
+ # Collect interceptors from client and params
323
+ @all_interceptors = client.options.interceptors.select { |i| i.is_a?(Interceptor) } + interceptors
324
+
325
+ # Cancellation for the whole worker
326
+ @worker_shutdown_cancellation = Cancellation.new
327
+
328
+ # Create workers
329
+ # TODO(cretz): Make conditional when workflows appear
330
+ @activity_worker = Internal::Worker::ActivityWorker.new(self, @bridge_worker)
331
+
332
+ # Validate worker
333
+ @bridge_worker.validate
104
334
  end
105
335
 
106
- # Run the worker and wait on it to be shut down.
107
- #
108
- # This will not return until shutdown is complete (and all running activities finished) and will
109
- # raise if there is a worker fatal error. To run multiple workers use the class method {.run}.
110
- #
111
- # @note A worker is only intended to be started once. Initialize a new worker should you need to
112
- # run it again.
113
- #
114
- # @yield Optionally you can provide a block by the end of which the worker will shut itself
115
- # down. You can use this to stop a worker after some time has passed or any other arbitrary
116
- # implementation has completed. Any errors raised from this block will be re-raised by this
117
- # method.
118
- def run(&block)
119
- Runner.new(self).run(&block)
336
+ # @return [String] Task queue set on the worker options.
337
+ def task_queue
338
+ @options.task_queue
120
339
  end
121
340
 
122
- # Start the worker asynchronously in a shared runtime.
123
- #
124
- # This is an internal method for advanced use-cases for those intended to implement their own
125
- # worker runner.
341
+ # Run this worker until cancellation or optional block completes. When the cancellation or block is complete, the
342
+ # worker is shut down. This will return the block result if everything successful or raise an error if not.
126
343
  #
127
- # @note A worker is only intended to be started once. Initialize a new worker should you need to
128
- # start it again.
344
+ # Upon shutdown (either via cancellation, block completion, or worker fatal error), the worker immediately stops
345
+ # accepting new work. Then, after an optional grace period, all activities are canceled. This call then waits for
346
+ # every activity and workflow task to complete before returning.
129
347
  #
130
- # @api private
131
- #
132
- # @param runner [Temporalio::Worker::Runner] A runner to notify when the worker is shutting down.
133
- def start(runner = nil)
134
- mutex.synchronize do
135
- raise 'Worker is already started' if started?
348
+ # @param cancellation [Cancellation] Cancellation that can be canceled to shut down this worker.
349
+ # @param shutdown_signals [Array] Signals to trap and cause worker shutdown.
350
+ # @param raise_in_block_on_shutdown [Exception, nil] Exception to {::Thread.raise} or {::Fiber.raise} if a block is
351
+ # present and still running on shutdown. If nil, `raise` is not used.
352
+ # @param wait_block_complete [Boolean] If block given and shutdown caused by something else (e.g. cancellation
353
+ # canceled), whether to wait on the block to complete before returning.
354
+ # @yield Optional block. This will be run in a new background thread or fiber. Worker will shut down upon completion
355
+ # of this and, assuming no other failures, return/bubble success/exception of the block.
356
+ # @return [Object] Return value of the block or nil of no block given.
357
+ def run(
358
+ cancellation: Cancellation.new,
359
+ shutdown_signals: [],
360
+ raise_in_block_on_shutdown: Error::CanceledError.new('Workers finished'),
361
+ wait_block_complete: true,
362
+ &block
363
+ )
364
+ Worker.run_all(self, cancellation:, shutdown_signals:, raise_in_block_on_shutdown:, wait_block_complete:, &block)
365
+ end
136
366
 
137
- @started = true
138
- end
367
+ # @!visibility private
368
+ def _worker_shutdown_cancellation
369
+ @worker_shutdown_cancellation
370
+ end
139
371
 
140
- @runner = runner
141
- runtime.ensure_callback_loop
372
+ # @!visibility private
373
+ def _initiate_shutdown
374
+ _bridge_worker.initiate_shutdown
375
+ _, cancel_proc = _worker_shutdown_cancellation
376
+ cancel_proc.call
377
+ end
142
378
 
143
- runtime.reactor.async do |task|
144
- if activity_worker
145
- task.async do |task|
146
- activity_worker.run(task)
147
- rescue StandardError => e
148
- shutdown(e) # initiate shutdown because of a fatal error
149
- end
150
- end
151
- end
379
+ # @!visibility private
380
+ def _wait_all_complete
381
+ @activity_worker&.wait_all_complete
152
382
  end
153
383
 
154
- # Initiate a worker shutdown and wait until complete.
155
- #
156
- # This can be called before the worker has even started and is safe for repeated invocations.
157
- # This method will not return until the worker has completed shutting down.
158
- #
159
- # @param exception [Exception] An exception to be raised from {#run} or {.run} methods after a
160
- # shutdown procedure has completed.
161
- def shutdown(exception = Temporalio::Error::WorkerShutdown.new('Manual shutdown'))
162
- mutex.synchronize do
163
- return unless running?
164
-
165
- # Let the runner know we're shutting down, so it can stop other workers.
166
- # This will cause a reentrant call to this method, but the mutex above will block that call.
167
- runner&.shutdown(exception)
168
-
169
- # Initiate Core shutdown, which will start dropping poll requests
170
- core_worker.initiate_shutdown
171
- # Start the graceful activity shutdown timer, which will cancel activities after the timeout
172
- activity_worker&.setup_graceful_shutdown_timer(runtime.reactor)
173
- # Wait for workers to drain any outstanding tasks
174
- activity_worker&.drain
175
- activity_executor.shutdown
176
- # Finalize the shutdown by stopping the Core
177
- core_worker.finalize_shutdown
178
-
179
- @shutdown = true
180
- end
384
+ # @!visibility private
385
+ def _bridge_worker
386
+ @bridge_worker
181
387
  end
182
388
 
183
- # Whether the worker has been started.
184
- #
185
- # @return [Boolean]
186
- def started?
187
- @started
389
+ # @!visibility private
390
+ def _all_interceptors
391
+ @all_interceptors
188
392
  end
189
393
 
190
- # Whether the worker is running.
191
- #
192
- # This is only `true` if the worker has been started and not yet shut down.
193
- #
194
- # @return [Boolean]
195
- def running?
196
- @started && !@shutdown
394
+ # @!visibility private
395
+ def _on_poll_bytes(worker_type, bytes)
396
+ # TODO(cretz): Workflow workers
397
+ raise "Unrecognized worker type #{worker_type}" unless worker_type == :activity
398
+
399
+ @activity_worker.handle_task(Internal::Bridge::Api::ActivityTask::ActivityTask.decode(bytes))
197
400
  end
198
401
 
199
402
  private
200
403
 
201
- attr_reader :mutex, :runtime, :activity_executor, :core_worker, :activity_worker,
202
- :runner
404
+ def to_bridge_slot_supplier_options(slot_supplier)
405
+ if slot_supplier.is_a?(Tuner::SlotSupplier::Fixed)
406
+ Internal::Bridge::Worker::TunerSlotSupplierOptions.new(
407
+ fixed_size: slot_supplier.slots,
408
+ resource_based: nil
409
+ )
410
+ elsif slot_supplier.is_a?(Tuner::SlotSupplier::ResourceBased)
411
+ Internal::Bridge::Worker::TunerSlotSupplierOptions.new(
412
+ fixed_size: nil,
413
+ resource_based: Internal::Bridge::Worker::TunerResourceBasedSlotSupplierOptions.new(
414
+ target_mem_usage: slot_supplier.tuner_options.target_memory_usage,
415
+ target_cpu_usage: slot_supplier.tuner_options.target_cpu_usage,
416
+ min_slots: slot_supplier.slot_options.min_slots,
417
+ max_slots: slot_supplier.slot_options.max_slots,
418
+ ramp_throttle: slot_supplier.slot_options.ramp_throttle
419
+ )
420
+ )
421
+ else
422
+ raise ArgumentError, 'Tuner slot suppliers must be instances of Fixed or ResourceBased'
423
+ end
424
+ end
203
425
  end
204
426
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Temporalio
4
+ # Representation of a workflow's history.
5
+ class WorkflowHistory
6
+ # History events for the workflow.
7
+ attr_reader :events
8
+
9
+ # @!visibility private
10
+ def initialize(events)
11
+ @events = events
12
+ end
13
+
14
+ # @return [String] ID of the workflow, extracted from the first event.
15
+ def workflow_id
16
+ start = events.first&.workflow_execution_started_event_attributes
17
+ raise 'First event not a start event' if start.nil?
18
+
19
+ start.workflow_id
20
+ end
21
+ end
22
+ end
data/lib/temporalio.rb CHANGED
@@ -1,12 +1,7 @@
1
- # Protoc wants all of its generated files on the LOAD_PATH
2
- $LOAD_PATH << File.expand_path('./gen', File.dirname(__FILE__))
1
+ # frozen_string_literal: true
3
2
 
4
- require 'temporalio/activity'
5
- require 'temporalio/bridge'
6
- require 'temporalio/client'
7
- require 'temporalio/connection'
8
3
  require 'temporalio/version'
9
- require 'temporalio/worker'
10
4
 
5
+ # Temporal Ruby SDK. See the README at https://github.com/temporalio/sdk-ruby.
11
6
  module Temporalio
12
7
  end