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,557 +0,0 @@
1
- mod activity_heartbeat_manager;
2
- mod activity_task_poller_stream;
3
- mod local_activities;
4
-
5
- pub(crate) use local_activities::{
6
- DispatchOrTimeoutLA, ExecutingLAId, LACompleteAction, LocalActRequest,
7
- LocalActivityExecutionResult, LocalActivityManager, LocalActivityResolution,
8
- LocalInFlightActInfo, NewLocalAct,
9
- };
10
-
11
- use crate::abstractions::{ClosableMeteredSemaphore, TrackedOwnedMeteredSemPermit};
12
- use crate::worker::activities::activity_task_poller_stream::new_activity_task_poller;
13
- use crate::{
14
- abstractions::{MeteredSemaphore, OwnedMeteredSemPermit, UsedMeteredSemPermit},
15
- pollers::BoxedActPoller,
16
- telemetry::metrics::{
17
- activity_type, activity_worker_type, eager, workflow_type, MetricsContext,
18
- },
19
- worker::{
20
- activities::activity_heartbeat_manager::ActivityHeartbeatError, client::WorkerClient,
21
- },
22
- PollActivityError, TaskToken,
23
- };
24
- use activity_heartbeat_manager::ActivityHeartbeatManager;
25
- use dashmap::DashMap;
26
- use futures::{stream, stream::BoxStream, stream::PollNext, Stream, StreamExt};
27
- use governor::{Quota, RateLimiter};
28
- use std::{
29
- convert::TryInto,
30
- future,
31
- sync::Arc,
32
- time::{Duration, Instant},
33
- };
34
- use temporal_sdk_core_protos::{
35
- coresdk::{
36
- activity_result::{self as ar, activity_execution_result as aer},
37
- activity_task::{ActivityCancelReason, ActivityTask},
38
- ActivityHeartbeat,
39
- },
40
- temporal::api::{
41
- failure::v1::{failure::FailureInfo, CanceledFailureInfo, Failure},
42
- workflowservice::v1::PollActivityTaskQueueResponse,
43
- },
44
- };
45
- use tokio::sync::mpsc::{unbounded_channel, UnboundedReceiver, UnboundedSender};
46
- use tokio::sync::{Mutex, Notify};
47
- use tokio_stream::wrappers::UnboundedReceiverStream;
48
- use tokio_util::sync::CancellationToken;
49
- use tracing::Span;
50
-
51
- #[derive(Debug, derive_more::Constructor)]
52
- struct PendingActivityCancel {
53
- task_token: TaskToken,
54
- reason: ActivityCancelReason,
55
- }
56
-
57
- /// Contains details that core wants to store while an activity is running.
58
- #[derive(Debug)]
59
- struct InFlightActInfo {
60
- pub activity_type: String,
61
- pub workflow_type: String,
62
- /// Only kept for logging reasons
63
- pub workflow_id: String,
64
- /// Only kept for logging reasons
65
- pub workflow_run_id: String,
66
- start_time: Instant,
67
- }
68
-
69
- /// Augments [InFlightActInfo] with details specific to remote activities
70
- struct RemoteInFlightActInfo {
71
- pub base: InFlightActInfo,
72
- /// Used to calculate aggregation delay between activity heartbeats.
73
- pub heartbeat_timeout: Option<prost_types::Duration>,
74
- /// Set to true if we have already issued a cancellation activation to lang for this activity
75
- pub issued_cancel_to_lang: bool,
76
- /// Set to true if we have already learned from the server this activity doesn't exist. EX:
77
- /// we have learned from heartbeating and issued a cancel task, in which case we may simply
78
- /// discard the reply.
79
- pub known_not_found: bool,
80
- /// The permit from the max concurrent semaphore
81
- _permit: UsedMeteredSemPermit,
82
- }
83
- impl RemoteInFlightActInfo {
84
- fn new(poll_resp: &PollActivityTaskQueueResponse, permit: UsedMeteredSemPermit) -> Self {
85
- let wec = poll_resp.workflow_execution.clone().unwrap_or_default();
86
- Self {
87
- base: InFlightActInfo {
88
- activity_type: poll_resp.activity_type.clone().unwrap_or_default().name,
89
- workflow_type: poll_resp.workflow_type.clone().unwrap_or_default().name,
90
- workflow_id: wec.workflow_id,
91
- workflow_run_id: wec.run_id,
92
- start_time: Instant::now(),
93
- },
94
- heartbeat_timeout: poll_resp.heartbeat_timeout.clone(),
95
- issued_cancel_to_lang: false,
96
- known_not_found: false,
97
- _permit: permit,
98
- }
99
- }
100
- }
101
-
102
- pub(crate) struct WorkerActivityTasks {
103
- /// Token used to signal the server task poller that shutdown is beginning
104
- poller_shutdown_token: CancellationToken,
105
- /// Centralizes management of heartbeat issuing / throttling
106
- heartbeat_manager: ActivityHeartbeatManager,
107
- /// Combined stream for any ActivityTask producing source (polls, eager activities, cancellations)
108
- activity_task_stream: Mutex<BoxStream<'static, Result<ActivityTask, PollActivityError>>>,
109
- /// Activities that have been issued to lang but not yet completed
110
- outstanding_activity_tasks: Arc<DashMap<TaskToken, RemoteInFlightActInfo>>,
111
- /// Ensures we don't exceed this worker's maximum concurrent activity limit for activities.
112
- /// This semaphore is used to limit eager activities but shares the same underlying [MeteredSemaphore] that is used
113
- /// to limit the concurrency for non-eager activities.
114
- eager_activities_semaphore: Arc<ClosableMeteredSemaphore>,
115
- /// Holds activity tasks we have received in direct response to workflow task completion (a.k.a eager activities).
116
- /// Tasks received in this stream hold a "tracked" permit that is issued by the `eager_activities_semaphore`.
117
- eager_activities_tx: UnboundedSender<TrackedPermittedTqResp>,
118
-
119
- metrics: MetricsContext,
120
-
121
- max_heartbeat_throttle_interval: Duration,
122
- default_heartbeat_throttle_interval: Duration,
123
-
124
- /// Wakes every time an activity is removed from the outstanding map
125
- complete_notify: Arc<Notify>,
126
- /// Token to notify when poll returned a shutdown error
127
- poll_returned_shutdown_token: CancellationToken,
128
- }
129
-
130
- #[derive(derive_more::From)]
131
- enum ActivityTaskSource {
132
- PendingCancel(PendingActivityCancel),
133
- PendingStart(Result<(PermittedTqResp, bool), PollActivityError>),
134
- }
135
-
136
- impl WorkerActivityTasks {
137
- pub(crate) fn new(
138
- max_activity_tasks: usize,
139
- max_worker_act_per_sec: Option<f64>,
140
- poller: BoxedActPoller,
141
- client: Arc<dyn WorkerClient>,
142
- metrics: MetricsContext,
143
- max_heartbeat_throttle_interval: Duration,
144
- default_heartbeat_throttle_interval: Duration,
145
- ) -> Self {
146
- let semaphore = Arc::new(MeteredSemaphore::new(
147
- max_activity_tasks,
148
- metrics.with_new_attrs([activity_worker_type()]),
149
- MetricsContext::available_task_slots,
150
- ));
151
- let poller_shutdown_token = CancellationToken::new();
152
- let rate_limiter = max_worker_act_per_sec.and_then(|ps| {
153
- Quota::with_period(Duration::from_secs_f64(ps.recip())).map(RateLimiter::direct)
154
- });
155
- let outstanding_activity_tasks = Arc::new(DashMap::new());
156
- let server_poller_stream = new_activity_task_poller(
157
- poller,
158
- semaphore.clone(),
159
- rate_limiter,
160
- metrics.clone(),
161
- poller_shutdown_token.clone(),
162
- );
163
- let (eager_activities_tx, eager_activities_rx) = unbounded_channel();
164
- let eager_activities_semaphore = ClosableMeteredSemaphore::new_arc(semaphore);
165
-
166
- let start_tasks_stream_complete = CancellationToken::new();
167
- let starts_stream = Self::merge_start_task_sources(
168
- eager_activities_rx,
169
- server_poller_stream,
170
- eager_activities_semaphore.clone(),
171
- start_tasks_stream_complete.clone(),
172
- );
173
- let (heartbeat_manager, cancels_rx) = ActivityHeartbeatManager::new(client);
174
- let complete_notify = Arc::new(Notify::new());
175
- let source_stream = stream::select_with_strategy(
176
- UnboundedReceiverStream::new(cancels_rx).map(ActivityTaskSource::from),
177
- starts_stream.map(ActivityTaskSource::from),
178
- |_: &mut ()| PollNext::Left,
179
- );
180
- // Create a task stream composed of (in poll preference order):
181
- // cancels_stream ------------------------------+--- activity_task_stream
182
- // eager_activities_rx ---+--- starts_stream ---|
183
- // server_poll_stream ---|
184
- let activity_task_stream = Self::merge_source_streams(
185
- source_stream,
186
- outstanding_activity_tasks.clone(),
187
- start_tasks_stream_complete,
188
- complete_notify.clone(),
189
- metrics.clone(),
190
- );
191
-
192
- Self {
193
- poller_shutdown_token,
194
- eager_activities_tx,
195
- heartbeat_manager,
196
- activity_task_stream: Mutex::new(activity_task_stream.boxed()),
197
- outstanding_activity_tasks,
198
- eager_activities_semaphore,
199
- complete_notify,
200
- metrics,
201
- max_heartbeat_throttle_interval,
202
- default_heartbeat_throttle_interval,
203
- poll_returned_shutdown_token: CancellationToken::new(),
204
- }
205
- }
206
-
207
- /// Merges the server poll and eager [ActivityTask] sources
208
- fn merge_start_task_sources(
209
- non_poll_tasks_rx: UnboundedReceiver<TrackedPermittedTqResp>,
210
- poller_stream: impl Stream<Item = Result<PermittedTqResp, tonic::Status>>,
211
- eager_activities_semaphore: Arc<ClosableMeteredSemaphore>,
212
- on_complete_token: CancellationToken,
213
- ) -> impl Stream<Item = Result<(PermittedTqResp, bool), PollActivityError>> {
214
- let non_poll_stream = stream::unfold(
215
- (non_poll_tasks_rx, eager_activities_semaphore),
216
- |(mut non_poll_tasks_rx, eager_activities_semaphore)| async move {
217
- loop {
218
- tokio::select! {
219
- biased;
220
-
221
- task_opt = non_poll_tasks_rx.recv() => {
222
- // Add is_eager true and wrap in Result
223
- return task_opt.map(|task| (Ok((PermittedTqResp{ permit: task.permit.into(), resp: task.resp }, true)), (non_poll_tasks_rx, eager_activities_semaphore)));
224
- }
225
- _ = eager_activities_semaphore.close_complete() => {
226
- // Once shutting down, we stop accepting eager activities
227
- non_poll_tasks_rx.close();
228
- continue;
229
- }
230
- }
231
- }
232
- },
233
- );
234
- // Add is_eager false
235
- let poller_stream = poller_stream.map(|res| res.map(|task| (task, false)));
236
-
237
- // Prefer eager activities over polling the server
238
- stream::select_with_strategy(non_poll_stream, poller_stream, |_: &mut ()| PollNext::Left)
239
- .map(|res| res.map_err(|err| err.into()))
240
- // This map, chain, filter_map sequence is here to cancel the token when this stream ends.
241
- .map(Some)
242
- .chain(futures::stream::once(async move {
243
- on_complete_token.cancel();
244
- None
245
- }))
246
- .filter_map(future::ready)
247
- }
248
-
249
- /// Builds an [ActivityTask] stream for cancellation tasks from cancels delivered from heartbeats
250
- fn merge_source_streams(
251
- source_stream: impl Stream<Item = ActivityTaskSource>,
252
- outstanding_tasks: Arc<DashMap<TaskToken, RemoteInFlightActInfo>>,
253
- start_tasks_stream_complete: CancellationToken,
254
- complete_notify: Arc<Notify>,
255
- metrics: MetricsContext,
256
- ) -> impl Stream<Item = Result<ActivityTask, PollActivityError>> {
257
- let outstanding_tasks_clone = outstanding_tasks.clone();
258
- source_stream.filter_map(move |source| {
259
- let outstanding_tasks = outstanding_tasks.clone();
260
- let metrics = metrics.clone();
261
- async move {
262
- match source {
263
- ActivityTaskSource::PendingCancel(next_pc) => {
264
- // It's possible that activity has been completed and we no longer have an
265
- // outstanding activity task. This is fine because it means that we no
266
- // longer need to cancel this activity, so we'll just ignore such orphaned
267
- // cancellations.
268
- if let Some(mut details) = outstanding_tasks.get_mut(&next_pc.task_token) {
269
- if details.issued_cancel_to_lang {
270
- // Don't double-issue cancellations
271
- return None
272
- }
273
-
274
- details.issued_cancel_to_lang = true;
275
- if next_pc.reason == ActivityCancelReason::NotFound {
276
- details.known_not_found = true;
277
- }
278
- Some(Ok(ActivityTask::cancel_from_ids(next_pc.task_token.0, next_pc.reason)))
279
- } else {
280
- debug!(task_token = ?next_pc.task_token, "Unknown activity task when issuing cancel");
281
- // If we can't find the activity here, it's already been completed,
282
- // in which case issuing a cancel again is pointless.
283
- None
284
- }
285
- },
286
- ActivityTaskSource::PendingStart(res) => {
287
- Some(res.map(|(task, is_eager)| {
288
- Self::about_to_issue_task(outstanding_tasks, task, is_eager, metrics)
289
- }))
290
- }
291
- }
292
- }
293
- }).take_until(async move {
294
- start_tasks_stream_complete.cancelled().await;
295
- while !outstanding_tasks_clone.is_empty() {
296
- complete_notify.notified().await
297
- }
298
- })
299
- }
300
-
301
- pub(crate) fn notify_shutdown(&self) {
302
- self.poller_shutdown_token.cancel();
303
- self.eager_activities_semaphore.close();
304
- }
305
-
306
- async fn shutdown_complete(&self) {
307
- self.poll_returned_shutdown_token.cancelled().await;
308
- self.heartbeat_manager.shutdown().await;
309
- }
310
-
311
- pub(crate) async fn shutdown(&self) {
312
- self.notify_shutdown();
313
- self.shutdown_complete().await;
314
- }
315
-
316
- /// Exclusive poll for activity tasks
317
- ///
318
- /// Polls the various task sources (server polls, eager activities, cancellations) while respecting the provided rate limits and allowed concurrency.
319
- /// Returns Err(PollActivityError::ShutDown) after shutdown is completed and all tasks sources are depleted.
320
- pub(crate) async fn poll(&self) -> Result<ActivityTask, PollActivityError> {
321
- let mut poller_stream = self.activity_task_stream.lock().await;
322
- poller_stream.next().await.unwrap_or_else(|| {
323
- self.poll_returned_shutdown_token.cancel();
324
- Err(PollActivityError::ShutDown)
325
- })
326
- }
327
-
328
- pub(crate) async fn complete(
329
- &self,
330
- task_token: TaskToken,
331
- status: aer::Status,
332
- client: &dyn WorkerClient,
333
- ) {
334
- if let Some((_, act_info)) = self.outstanding_activity_tasks.remove(&task_token) {
335
- let act_metrics = self.metrics.with_new_attrs([
336
- activity_type(act_info.base.activity_type),
337
- workflow_type(act_info.base.workflow_type),
338
- ]);
339
- Span::current().record("workflow_id", act_info.base.workflow_id);
340
- Span::current().record("run_id", act_info.base.workflow_run_id);
341
- act_metrics.act_execution_latency(act_info.base.start_time.elapsed());
342
- let known_not_found = act_info.known_not_found;
343
-
344
- self.heartbeat_manager.evict(task_token.clone()).await;
345
- self.complete_notify.notify_waiters();
346
-
347
- // No need to report activities which we already know the server doesn't care about
348
- if !known_not_found {
349
- let maybe_net_err = match status {
350
- aer::Status::WillCompleteAsync(_) => None,
351
- aer::Status::Completed(ar::Success { result }) => client
352
- .complete_activity_task(task_token.clone(), result.map(Into::into))
353
- .await
354
- .err(),
355
- aer::Status::Failed(ar::Failure { failure }) => {
356
- act_metrics.act_execution_failed();
357
- client
358
- .fail_activity_task(task_token.clone(), failure.map(Into::into))
359
- .await
360
- .err()
361
- }
362
- aer::Status::Cancelled(ar::Cancellation { failure }) => {
363
- let details = if let Some(Failure {
364
- failure_info:
365
- Some(FailureInfo::CanceledFailureInfo(CanceledFailureInfo { details })),
366
- ..
367
- }) = failure
368
- {
369
- details
370
- } else {
371
- warn!(task_token = ? task_token,
372
- "Expected activity cancelled status with CanceledFailureInfo");
373
- None
374
- };
375
- client
376
- .cancel_activity_task(task_token.clone(), details.map(Into::into))
377
- .await
378
- .err()
379
- }
380
- };
381
-
382
- if let Some(e) = maybe_net_err {
383
- if e.code() == tonic::Code::NotFound {
384
- warn!(task_token = ?task_token, details = ?e, "Activity not found on \
385
- completion. This may happen if the activity has already been cancelled but \
386
- completed anyway.");
387
- } else {
388
- warn!(error=?e, "Network error while completing activity");
389
- };
390
- };
391
- };
392
- } else {
393
- warn!(
394
- "Attempted to complete activity task {} but we were not tracking it",
395
- &task_token
396
- );
397
- }
398
- }
399
-
400
- /// Attempt to record an activity heartbeat
401
- pub(crate) fn record_heartbeat(
402
- &self,
403
- details: ActivityHeartbeat,
404
- ) -> Result<(), ActivityHeartbeatError> {
405
- // TODO: Propagate these back as cancels. Silent fails is too nonobvious
406
- let heartbeat_timeout: Duration = self
407
- .outstanding_activity_tasks
408
- .get(&TaskToken(details.task_token.clone()))
409
- .ok_or(ActivityHeartbeatError::UnknownActivity)?
410
- .heartbeat_timeout
411
- .clone()
412
- // We treat None as 0 (even though heartbeat_timeout is never set to None by the server)
413
- .unwrap_or_default()
414
- .try_into()
415
- // This technically should never happen since prost duration should be directly mappable
416
- // to std::time::Duration.
417
- .or(Err(ActivityHeartbeatError::InvalidHeartbeatTimeout))?;
418
-
419
- // There is a bug in the server that translates non-set heartbeat timeouts into 0 duration.
420
- // That's why we treat 0 the same way as None, otherwise we wouldn't know which aggregation
421
- // delay to use, and using 0 is not a good idea as SDK would hammer the server too hard.
422
- let throttle_interval = if heartbeat_timeout.as_millis() == 0 {
423
- self.default_heartbeat_throttle_interval
424
- } else {
425
- heartbeat_timeout.mul_f64(0.8)
426
- };
427
- let throttle_interval =
428
- std::cmp::min(throttle_interval, self.max_heartbeat_throttle_interval);
429
- self.heartbeat_manager.record(details, throttle_interval)
430
- }
431
-
432
- /// Returns a handle that the workflows management side can use to interact with this manager
433
- pub(crate) fn get_handle_for_workflows(&self) -> ActivitiesFromWFTsHandle {
434
- ActivitiesFromWFTsHandle {
435
- sem: self.eager_activities_semaphore.clone(),
436
- tx: self.eager_activities_tx.clone(),
437
- }
438
- }
439
-
440
- /// Called when there is a new [ActivityTask] about to be bubbled up out of the poller
441
- fn about_to_issue_task(
442
- outstanding_tasks: Arc<DashMap<TaskToken, RemoteInFlightActInfo>>,
443
- task: PermittedTqResp,
444
- is_eager: bool,
445
- metrics: MetricsContext,
446
- ) -> ActivityTask {
447
- if let Some(ref act_type) = task.resp.activity_type {
448
- if let Some(ref wf_type) = task.resp.workflow_type {
449
- metrics
450
- .with_new_attrs([
451
- activity_type(act_type.name.clone()),
452
- workflow_type(wf_type.name.clone()),
453
- eager(is_eager),
454
- ])
455
- .act_task_received();
456
- }
457
- }
458
- // There could be an else statement here but since the response should always contain both
459
- // activity_type and workflow_type, we won't bother.
460
-
461
- if let Some(dur) = task.resp.sched_to_start() {
462
- metrics.act_sched_to_start_latency(dur);
463
- };
464
-
465
- outstanding_tasks.insert(
466
- task.resp.task_token.clone().into(),
467
- RemoteInFlightActInfo::new(&task.resp, task.permit.into_used()),
468
- );
469
-
470
- ActivityTask::start_from_poll_resp(task.resp)
471
- }
472
-
473
- #[cfg(test)]
474
- pub(crate) fn remaining_activity_capacity(&self) -> usize {
475
- self.eager_activities_semaphore.available_permits()
476
- }
477
- }
478
-
479
- /// Provides facilities for the workflow side of things to interact with the activity manager.
480
- /// Allows for the handling of activities returned by WFT completions.
481
- pub(crate) struct ActivitiesFromWFTsHandle {
482
- sem: Arc<ClosableMeteredSemaphore>,
483
- tx: UnboundedSender<TrackedPermittedTqResp>,
484
- }
485
-
486
- impl ActivitiesFromWFTsHandle {
487
- /// Returns a handle that can be used to reserve an activity slot. EX: When requesting eager
488
- /// dispatch of an activity to this worker upon workflow task completion
489
- pub(crate) fn reserve_slot(&self) -> Option<TrackedOwnedMeteredSemPermit> {
490
- // TODO: check if rate limit is not exceeded and count this reservation towards the rate limit
491
- self.sem.try_acquire_owned().ok()
492
- }
493
-
494
- /// Queue new activity tasks for dispatch received from non-polling sources (ex: eager returns
495
- /// from WFT completion)
496
- pub(crate) fn add_tasks(&self, tasks: impl IntoIterator<Item = TrackedPermittedTqResp>) {
497
- for t in tasks.into_iter() {
498
- // Technically we should be reporting `activity_task_received` here, but for simplicity
499
- // and time insensitivity, that metric is tracked in `about_to_issue_task`.
500
- self.tx.send(t).expect("Receive half cannot be dropped");
501
- }
502
- }
503
- }
504
-
505
- #[derive(Debug)]
506
- pub(crate) struct PermittedTqResp {
507
- pub permit: OwnedMeteredSemPermit,
508
- pub resp: PollActivityTaskQueueResponse,
509
- }
510
-
511
- #[derive(Debug)]
512
- pub(crate) struct TrackedPermittedTqResp {
513
- pub permit: TrackedOwnedMeteredSemPermit,
514
- pub resp: PollActivityTaskQueueResponse,
515
- }
516
-
517
- #[cfg(test)]
518
- mod tests {
519
- use super::*;
520
- use crate::{
521
- test_help::mock_poller_from_resps, worker::client::mocks::mock_manual_workflow_client,
522
- };
523
-
524
- #[tokio::test]
525
- async fn per_worker_ratelimit() {
526
- let poller = mock_poller_from_resps([
527
- PollActivityTaskQueueResponse {
528
- task_token: vec![1],
529
- activity_id: "act1".to_string(),
530
- ..Default::default()
531
- }
532
- .into(),
533
- PollActivityTaskQueueResponse {
534
- task_token: vec![2],
535
- activity_id: "act2".to_string(),
536
- ..Default::default()
537
- }
538
- .into(),
539
- ]);
540
- let atm = WorkerActivityTasks::new(
541
- 10,
542
- Some(2.0),
543
- poller,
544
- Arc::new(mock_manual_workflow_client()),
545
- MetricsContext::no_op(),
546
- Duration::from_secs(1),
547
- Duration::from_secs(1),
548
- );
549
- let start = Instant::now();
550
- atm.poll().await.unwrap();
551
- atm.poll().await.unwrap();
552
- // At least half a second will have elapsed since we only allow 2 tasks per second.
553
- // With no ratelimit, even on a slow CI server with lots of load, this would typically take
554
- // low single digit ms or less.
555
- assert!(start.elapsed() > Duration::from_secs_f64(0.5));
556
- }
557
- }
@@ -1,107 +0,0 @@
1
- use super::*;
2
- use futures::Future;
3
-
4
- pub(crate) static DEFAULT_TEST_CAPABILITIES: &Capabilities = &Capabilities {
5
- signal_and_query_header: true,
6
- internal_error_differentiation: true,
7
- activity_failure_include_heartbeat: true,
8
- supports_schedules: true,
9
- encoded_failure_attributes: true,
10
- build_id_based_versioning: true,
11
- upsert_memo: true,
12
- eager_workflow_start: true,
13
- sdk_metadata: true,
14
- };
15
-
16
- #[cfg(test)]
17
- /// Create a mock client primed with basic necessary expectations
18
- pub(crate) fn mock_workflow_client() -> MockWorkerClient {
19
- let mut r = MockWorkerClient::new();
20
- r.expect_capabilities()
21
- .returning(|| Some(DEFAULT_TEST_CAPABILITIES));
22
- r
23
- }
24
-
25
- /// Create a mock manual client primed with basic necessary expectations
26
- pub(crate) fn mock_manual_workflow_client() -> MockManualWorkerClient {
27
- let mut r = MockManualWorkerClient::new();
28
- r.expect_capabilities()
29
- .returning(|| Some(DEFAULT_TEST_CAPABILITIES));
30
- r
31
- }
32
-
33
- // Need a version of the mock that can return futures so we can return potentially pending
34
- // results. This is really annoying b/c of the async trait stuff. Need
35
- // https://github.com/asomers/mockall/issues/189 to be fixed for it to go away.
36
- mockall::mock! {
37
- pub(crate) ManualWorkerClient {}
38
- #[allow(unused)]
39
- impl WorkerClient for ManualWorkerClient {
40
- fn poll_workflow_task<'a, 'b>(&'a self, task_queue: String, is_sticky: bool)
41
- -> impl Future<Output = Result<PollWorkflowTaskQueueResponse>> + Send + 'b
42
- where 'a: 'b, Self: 'b;
43
-
44
- fn poll_activity_task<'a, 'b>(&self, task_queue: String, max_tasks_per_sec: Option<f64>)
45
- -> impl Future<Output = Result<PollActivityTaskQueueResponse>> + Send + 'b
46
- where 'a: 'b, Self: 'b;
47
-
48
- fn complete_workflow_task<'a, 'b>(
49
- &self,
50
- request: WorkflowTaskCompletion,
51
- ) -> impl Future<Output = Result<RespondWorkflowTaskCompletedResponse>> + Send + 'b
52
- where 'a: 'b, Self: 'b;
53
-
54
- fn complete_activity_task<'a, 'b>(
55
- &self,
56
- task_token: TaskToken,
57
- result: Option<Payloads>,
58
- ) -> impl Future<Output = Result<RespondActivityTaskCompletedResponse>> + Send + 'b
59
- where 'a: 'b, Self: 'b;
60
-
61
- fn cancel_activity_task<'a, 'b>(
62
- &self,
63
- task_token: TaskToken,
64
- details: Option<Payloads>,
65
- ) -> impl Future<Output = Result<RespondActivityTaskCanceledResponse>> + Send + 'b
66
- where 'a: 'b, Self: 'b;
67
-
68
- fn fail_activity_task<'a, 'b>(
69
- &self,
70
- task_token: TaskToken,
71
- failure: Option<Failure>,
72
- ) -> impl Future<Output = Result<RespondActivityTaskFailedResponse>> + Send + 'b
73
- where 'a: 'b, Self: 'b;
74
-
75
- fn fail_workflow_task<'a, 'b>(
76
- &self,
77
- task_token: TaskToken,
78
- cause: WorkflowTaskFailedCause,
79
- failure: Option<Failure>,
80
- ) -> impl Future<Output = Result<RespondWorkflowTaskFailedResponse>> + Send + 'b
81
- where 'a: 'b, Self: 'b;
82
-
83
- fn record_activity_heartbeat<'a, 'b>(
84
- &self,
85
- task_token: TaskToken,
86
- details: Option<Payloads>,
87
- ) -> impl Future<Output = Result<RecordActivityTaskHeartbeatResponse>> + Send + 'b
88
- where 'a: 'b, Self: 'b;
89
-
90
- fn get_workflow_execution_history<'a, 'b>(
91
- &self,
92
- workflow_id: String,
93
- run_id: Option<String>,
94
- page_token: Vec<u8>
95
- ) -> impl Future<Output = Result<GetWorkflowExecutionHistoryResponse>> + Send + 'b
96
- where 'a: 'b, Self: 'b;
97
-
98
- fn respond_legacy_query<'a, 'b>(
99
- &self,
100
- task_token: TaskToken,
101
- query_result: QueryResult,
102
- ) -> impl Future<Output = Result<RespondQueryTaskCompletedResponse>> + Send + 'b
103
- where 'a: 'b, Self: 'b;
104
-
105
- fn capabilities(&self) -> Option<&'static get_system_info_response::Capabilities>;
106
- }
107
- }