temporalio 0.1.1 → 0.3.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 (628) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -0
  3. data/Cargo.lock +4324 -0
  4. data/Cargo.toml +25 -0
  5. data/Gemfile +20 -0
  6. data/LICENSE +16 -15
  7. data/README.md +985 -183
  8. data/Rakefile +101 -0
  9. data/ext/Cargo.toml +26 -0
  10. data/lib/temporalio/activity/complete_async_error.rb +11 -0
  11. data/lib/temporalio/activity/context.rb +86 -78
  12. data/lib/temporalio/activity/definition.rb +175 -0
  13. data/lib/temporalio/activity/info.rb +44 -47
  14. data/lib/temporalio/activity.rb +8 -81
  15. data/lib/temporalio/api/activity/v1/message.rb +25 -0
  16. data/lib/temporalio/api/batch/v1/message.rb +31 -0
  17. data/lib/temporalio/api/cloud/account/v1/message.rb +28 -0
  18. data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +126 -0
  19. data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
  20. data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
  21. data/lib/temporalio/api/cloud/identity/v1/message.rb +41 -0
  22. data/lib/temporalio/api/cloud/namespace/v1/message.rb +42 -0
  23. data/lib/temporalio/api/cloud/nexus/v1/message.rb +31 -0
  24. data/lib/temporalio/api/cloud/operation/v1/message.rb +28 -0
  25. data/lib/temporalio/api/cloud/region/v1/message.rb +24 -0
  26. data/lib/temporalio/api/cloud/resource/v1/message.rb +23 -0
  27. data/lib/temporalio/api/cloud/sink/v1/message.rb +24 -0
  28. data/lib/temporalio/api/cloud/usage/v1/message.rb +31 -0
  29. data/lib/temporalio/api/command/v1/message.rb +46 -0
  30. data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
  31. data/lib/temporalio/api/common/v1/message.rb +47 -0
  32. data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
  33. data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
  34. data/lib/temporalio/api/enums/v1/common.rb +26 -0
  35. data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
  36. data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
  37. data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
  38. data/lib/temporalio/api/enums/v1/query.rb +22 -0
  39. data/lib/temporalio/api/enums/v1/reset.rb +23 -0
  40. data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
  41. data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
  42. data/lib/temporalio/api/enums/v1/update.rb +22 -0
  43. data/lib/temporalio/api/enums/v1/workflow.rb +30 -0
  44. data/lib/temporalio/api/errordetails/v1/message.rb +42 -0
  45. data/lib/temporalio/api/export/v1/message.rb +24 -0
  46. data/lib/temporalio/api/failure/v1/message.rb +35 -0
  47. data/lib/temporalio/api/filter/v1/message.rb +27 -0
  48. data/lib/temporalio/api/history/v1/message.rb +90 -0
  49. data/lib/temporalio/api/namespace/v1/message.rb +31 -0
  50. data/lib/temporalio/api/nexus/v1/message.rb +40 -0
  51. data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
  52. data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
  53. data/lib/temporalio/api/operatorservice.rb +3 -0
  54. data/lib/temporalio/api/payload_visitor.rb +1513 -0
  55. data/lib/temporalio/api/protocol/v1/message.rb +23 -0
  56. data/lib/temporalio/api/query/v1/message.rb +27 -0
  57. data/lib/temporalio/api/replication/v1/message.rb +26 -0
  58. data/lib/temporalio/api/schedule/v1/message.rb +43 -0
  59. data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
  60. data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
  61. data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
  62. data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
  63. data/lib/temporalio/api/taskqueue/v1/message.rb +45 -0
  64. data/lib/{gen/temporal/api/testservice/v1/request_response_pb.rb → temporalio/api/testservice/v1/request_response.rb} +6 -24
  65. data/lib/temporalio/api/testservice/v1/service.rb +23 -0
  66. data/lib/temporalio/api/update/v1/message.rb +33 -0
  67. data/lib/temporalio/api/version/v1/message.rb +26 -0
  68. data/lib/temporalio/api/workflow/v1/message.rb +43 -0
  69. data/lib/temporalio/api/workflowservice/v1/request_response.rb +204 -0
  70. data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
  71. data/lib/temporalio/api/workflowservice.rb +3 -0
  72. data/lib/temporalio/api.rb +14 -0
  73. data/lib/temporalio/cancellation.rb +170 -0
  74. data/lib/temporalio/client/activity_id_reference.rb +32 -0
  75. data/lib/temporalio/client/async_activity_handle.rb +85 -0
  76. data/lib/temporalio/client/connection/cloud_service.rb +726 -0
  77. data/lib/temporalio/client/connection/operator_service.rb +201 -0
  78. data/lib/temporalio/client/connection/service.rb +42 -0
  79. data/lib/temporalio/client/connection/test_service.rb +111 -0
  80. data/lib/temporalio/client/connection/workflow_service.rb +1041 -0
  81. data/lib/temporalio/client/connection.rb +316 -0
  82. data/lib/temporalio/client/interceptor.rb +416 -0
  83. data/lib/temporalio/client/schedule.rb +967 -0
  84. data/lib/temporalio/client/schedule_handle.rb +126 -0
  85. data/lib/temporalio/client/workflow_execution.rb +100 -0
  86. data/lib/temporalio/client/workflow_execution_count.rb +36 -0
  87. data/lib/temporalio/client/workflow_execution_status.rb +18 -0
  88. data/lib/temporalio/client/workflow_handle.rb +326 -180
  89. data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
  90. data/lib/temporalio/client/workflow_update_handle.rb +65 -0
  91. data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
  92. data/lib/temporalio/client.rb +447 -94
  93. data/lib/temporalio/common_enums.rb +41 -0
  94. data/lib/temporalio/converters/data_converter.rb +99 -0
  95. data/lib/temporalio/converters/failure_converter.rb +202 -0
  96. data/lib/temporalio/converters/payload_codec.rb +26 -0
  97. data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
  98. data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
  99. data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
  100. data/lib/temporalio/converters/payload_converter/composite.rb +66 -0
  101. data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
  102. data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
  103. data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
  104. data/lib/temporalio/converters/payload_converter.rb +71 -0
  105. data/lib/temporalio/converters/raw_value.rb +20 -0
  106. data/lib/temporalio/converters.rb +9 -0
  107. data/lib/temporalio/error/failure.rb +119 -94
  108. data/lib/temporalio/error.rb +155 -0
  109. data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
  110. data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +31 -0
  111. data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
  112. data/lib/temporalio/internal/bridge/api/common/common.rb +26 -0
  113. data/lib/temporalio/internal/bridge/api/core_interface.rb +40 -0
  114. data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
  115. data/lib/temporalio/internal/bridge/api/nexus/nexus.rb +33 -0
  116. data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +56 -0
  117. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +57 -0
  118. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +30 -0
  119. data/lib/temporalio/internal/bridge/api.rb +3 -0
  120. data/lib/temporalio/internal/bridge/client.rb +95 -0
  121. data/lib/temporalio/internal/bridge/runtime.rb +53 -0
  122. data/lib/temporalio/internal/bridge/testing.rb +66 -0
  123. data/lib/temporalio/internal/bridge/worker.rb +85 -0
  124. data/lib/temporalio/internal/bridge.rb +36 -0
  125. data/lib/temporalio/internal/client/implementation.rb +700 -0
  126. data/lib/temporalio/internal/metric.rb +122 -0
  127. data/lib/temporalio/internal/proto_utils.rb +133 -0
  128. data/lib/temporalio/internal/worker/activity_worker.rb +373 -0
  129. data/lib/temporalio/internal/worker/multi_runner.rb +213 -0
  130. data/lib/temporalio/internal/worker/workflow_instance/child_workflow_handle.rb +54 -0
  131. data/lib/temporalio/internal/worker/workflow_instance/context.rb +329 -0
  132. data/lib/temporalio/internal/worker/workflow_instance/details.rb +44 -0
  133. data/lib/temporalio/internal/worker/workflow_instance/external_workflow_handle.rb +32 -0
  134. data/lib/temporalio/internal/worker/workflow_instance/externally_immutable_hash.rb +22 -0
  135. data/lib/temporalio/internal/worker/workflow_instance/handler_execution.rb +25 -0
  136. data/lib/temporalio/internal/worker/workflow_instance/handler_hash.rb +41 -0
  137. data/lib/temporalio/internal/worker/workflow_instance/illegal_call_tracer.rb +97 -0
  138. data/lib/temporalio/internal/worker/workflow_instance/inbound_implementation.rb +62 -0
  139. data/lib/temporalio/internal/worker/workflow_instance/outbound_implementation.rb +415 -0
  140. data/lib/temporalio/internal/worker/workflow_instance/replay_safe_logger.rb +37 -0
  141. data/lib/temporalio/internal/worker/workflow_instance/replay_safe_metric.rb +40 -0
  142. data/lib/temporalio/internal/worker/workflow_instance/scheduler.rb +163 -0
  143. data/lib/temporalio/internal/worker/workflow_instance.rb +730 -0
  144. data/lib/temporalio/internal/worker/workflow_worker.rb +196 -0
  145. data/lib/temporalio/internal.rb +7 -0
  146. data/lib/temporalio/metric.rb +109 -0
  147. data/lib/temporalio/retry_policy.rb +55 -73
  148. data/lib/temporalio/runtime.rb +302 -13
  149. data/lib/temporalio/scoped_logger.rb +96 -0
  150. data/lib/temporalio/search_attributes.rb +343 -0
  151. data/lib/temporalio/testing/activity_environment.rb +132 -0
  152. data/lib/temporalio/testing/workflow_environment.rb +345 -74
  153. data/lib/temporalio/testing.rb +4 -169
  154. data/lib/temporalio/version.rb +3 -1
  155. data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
  156. data/lib/temporalio/worker/activity_executor/thread_pool.rb +46 -0
  157. data/lib/temporalio/worker/activity_executor.rb +55 -0
  158. data/lib/temporalio/worker/interceptor.rb +362 -0
  159. data/lib/temporalio/worker/thread_pool.rb +237 -0
  160. data/lib/temporalio/worker/tuner.rb +151 -0
  161. data/lib/temporalio/worker/workflow_executor/thread_pool.rb +230 -0
  162. data/lib/temporalio/worker/workflow_executor.rb +26 -0
  163. data/lib/temporalio/worker.rb +554 -161
  164. data/lib/temporalio/workflow/activity_cancellation_type.rb +20 -0
  165. data/lib/temporalio/workflow/child_workflow_cancellation_type.rb +21 -0
  166. data/lib/temporalio/workflow/child_workflow_handle.rb +43 -0
  167. data/lib/temporalio/workflow/definition.rb +566 -0
  168. data/lib/temporalio/workflow/external_workflow_handle.rb +41 -0
  169. data/lib/temporalio/workflow/future.rb +117 -104
  170. data/lib/temporalio/workflow/handler_unfinished_policy.rb +13 -0
  171. data/lib/temporalio/workflow/info.rb +63 -57
  172. data/lib/temporalio/workflow/parent_close_policy.rb +19 -0
  173. data/lib/temporalio/workflow/update_info.rb +20 -0
  174. data/lib/temporalio/workflow.rb +523 -0
  175. data/lib/temporalio/workflow_history.rb +22 -0
  176. data/lib/temporalio.rb +6 -7
  177. data/temporalio.gemspec +20 -39
  178. metadata +171 -710
  179. data/bridge/Cargo.lock +0 -2997
  180. data/bridge/Cargo.toml +0 -29
  181. data/bridge/sdk-core/ARCHITECTURE.md +0 -76
  182. data/bridge/sdk-core/Cargo.toml +0 -2
  183. data/bridge/sdk-core/LICENSE.txt +0 -23
  184. data/bridge/sdk-core/README.md +0 -117
  185. data/bridge/sdk-core/arch_docs/diagrams/README.md +0 -10
  186. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +0 -40
  187. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
  188. data/bridge/sdk-core/arch_docs/sticky_queues.md +0 -51
  189. data/bridge/sdk-core/client/Cargo.toml +0 -40
  190. data/bridge/sdk-core/client/LICENSE.txt +0 -23
  191. data/bridge/sdk-core/client/src/lib.rs +0 -1462
  192. data/bridge/sdk-core/client/src/metrics.rs +0 -174
  193. data/bridge/sdk-core/client/src/raw.rs +0 -932
  194. data/bridge/sdk-core/client/src/retry.rs +0 -763
  195. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +0 -185
  196. data/bridge/sdk-core/core/Cargo.toml +0 -129
  197. data/bridge/sdk-core/core/LICENSE.txt +0 -23
  198. data/bridge/sdk-core/core/benches/workflow_replay.rs +0 -76
  199. data/bridge/sdk-core/core/src/abstractions.rs +0 -355
  200. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +0 -1049
  201. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +0 -221
  202. data/bridge/sdk-core/core/src/core_tests/determinism.rs +0 -270
  203. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +0 -1046
  204. data/bridge/sdk-core/core/src/core_tests/mod.rs +0 -100
  205. data/bridge/sdk-core/core/src/core_tests/queries.rs +0 -893
  206. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +0 -65
  207. data/bridge/sdk-core/core/src/core_tests/workers.rs +0 -257
  208. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +0 -124
  209. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +0 -2433
  210. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +0 -609
  211. data/bridge/sdk-core/core/src/internal_flags.rs +0 -136
  212. data/bridge/sdk-core/core/src/lib.rs +0 -289
  213. data/bridge/sdk-core/core/src/pollers/mod.rs +0 -54
  214. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +0 -297
  215. data/bridge/sdk-core/core/src/protosext/mod.rs +0 -428
  216. data/bridge/sdk-core/core/src/replay/mod.rs +0 -215
  217. data/bridge/sdk-core/core/src/retry_logic.rs +0 -202
  218. data/bridge/sdk-core/core/src/telemetry/log_export.rs +0 -190
  219. data/bridge/sdk-core/core/src/telemetry/metrics.rs +0 -462
  220. data/bridge/sdk-core/core/src/telemetry/mod.rs +0 -423
  221. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +0 -83
  222. data/bridge/sdk-core/core/src/test_help/mod.rs +0 -939
  223. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +0 -536
  224. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +0 -89
  225. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +0 -1278
  226. data/bridge/sdk-core/core/src/worker/activities.rs +0 -557
  227. data/bridge/sdk-core/core/src/worker/client/mocks.rs +0 -107
  228. data/bridge/sdk-core/core/src/worker/client.rs +0 -389
  229. data/bridge/sdk-core/core/src/worker/mod.rs +0 -677
  230. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
  231. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +0 -99
  232. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +0 -1111
  233. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +0 -964
  234. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +0 -294
  235. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -168
  236. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +0 -918
  237. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +0 -137
  238. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +0 -158
  239. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +0 -130
  240. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +0 -1525
  241. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +0 -324
  242. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +0 -179
  243. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -659
  244. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +0 -439
  245. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +0 -435
  246. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +0 -175
  247. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +0 -249
  248. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +0 -85
  249. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +0 -1280
  250. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +0 -269
  251. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -213
  252. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +0 -1305
  253. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +0 -1276
  254. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +0 -128
  255. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +0 -125
  256. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +0 -85
  257. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +0 -117
  258. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +0 -24
  259. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +0 -715
  260. data/bridge/sdk-core/core-api/Cargo.toml +0 -33
  261. data/bridge/sdk-core/core-api/LICENSE.txt +0 -23
  262. data/bridge/sdk-core/core-api/src/errors.rs +0 -62
  263. data/bridge/sdk-core/core-api/src/lib.rs +0 -113
  264. data/bridge/sdk-core/core-api/src/telemetry.rs +0 -141
  265. data/bridge/sdk-core/core-api/src/worker.rs +0 -161
  266. data/bridge/sdk-core/etc/deps.svg +0 -162
  267. data/bridge/sdk-core/etc/dynamic-config.yaml +0 -2
  268. data/bridge/sdk-core/etc/otel-collector-config.yaml +0 -36
  269. data/bridge/sdk-core/etc/prometheus.yaml +0 -6
  270. data/bridge/sdk-core/etc/regen-depgraph.sh +0 -5
  271. data/bridge/sdk-core/fsm/Cargo.toml +0 -18
  272. data/bridge/sdk-core/fsm/LICENSE.txt +0 -23
  273. data/bridge/sdk-core/fsm/README.md +0 -3
  274. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  275. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -23
  276. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +0 -650
  277. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  278. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +0 -18
  279. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  280. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +0 -41
  281. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +0 -14
  282. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +0 -11
  283. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +0 -32
  284. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +0 -31
  285. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +0 -46
  286. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +0 -29
  287. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -12
  288. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +0 -32
  289. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +0 -18
  290. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  291. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +0 -11
  292. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  293. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +0 -11
  294. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  295. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  296. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -23
  297. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +0 -254
  298. data/bridge/sdk-core/fsm/src/lib.rs +0 -2
  299. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  300. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  301. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  302. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  303. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  304. data/bridge/sdk-core/integ-with-otel.sh +0 -7
  305. data/bridge/sdk-core/protos/api_upstream/README.md +0 -9
  306. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
  307. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -9
  308. data/bridge/sdk-core/protos/api_upstream/build/go.mod +0 -7
  309. data/bridge/sdk-core/protos/api_upstream/build/go.sum +0 -5
  310. data/bridge/sdk-core/protos/api_upstream/build/tools.go +0 -29
  311. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +0 -141
  312. data/bridge/sdk-core/protos/api_upstream/go.mod +0 -6
  313. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -89
  314. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +0 -248
  315. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +0 -123
  316. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -47
  317. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -52
  318. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -56
  319. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -170
  320. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -123
  321. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -51
  322. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -50
  323. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -41
  324. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -60
  325. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -59
  326. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -56
  327. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -122
  328. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -108
  329. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -114
  330. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -56
  331. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +0 -787
  332. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -99
  333. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -124
  334. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -80
  335. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -57
  336. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +0 -61
  337. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -55
  338. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -379
  339. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -63
  340. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -108
  341. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +0 -111
  342. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +0 -59
  343. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -146
  344. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -1199
  345. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -415
  346. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +0 -63
  347. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -79
  348. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -80
  349. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -78
  350. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +0 -16
  351. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +0 -31
  352. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -31
  353. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -270
  354. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -305
  355. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -35
  356. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +0 -38
  357. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +0 -13
  358. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
  359. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -63
  360. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -90
  361. data/bridge/sdk-core/rustfmt.toml +0 -1
  362. data/bridge/sdk-core/sdk/Cargo.toml +0 -48
  363. data/bridge/sdk-core/sdk/LICENSE.txt +0 -23
  364. data/bridge/sdk-core/sdk/src/activity_context.rs +0 -230
  365. data/bridge/sdk-core/sdk/src/app_data.rs +0 -37
  366. data/bridge/sdk-core/sdk/src/interceptors.rs +0 -50
  367. data/bridge/sdk-core/sdk/src/lib.rs +0 -861
  368. data/bridge/sdk-core/sdk/src/payload_converter.rs +0 -11
  369. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +0 -295
  370. data/bridge/sdk-core/sdk/src/workflow_context.rs +0 -694
  371. data/bridge/sdk-core/sdk/src/workflow_future.rs +0 -500
  372. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +0 -33
  373. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +0 -23
  374. data/bridge/sdk-core/sdk-core-protos/build.rs +0 -142
  375. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +0 -7
  376. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +0 -557
  377. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +0 -234
  378. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +0 -2088
  379. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +0 -48
  380. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +0 -14
  381. data/bridge/sdk-core/test-utils/Cargo.toml +0 -38
  382. data/bridge/sdk-core/test-utils/src/canned_histories.rs +0 -1389
  383. data/bridge/sdk-core/test-utils/src/histfetch.rs +0 -28
  384. data/bridge/sdk-core/test-utils/src/lib.rs +0 -709
  385. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +0 -50
  386. data/bridge/sdk-core/test-utils/src/workflows.rs +0 -29
  387. data/bridge/sdk-core/tests/fuzzy_workflow.rs +0 -130
  388. data/bridge/sdk-core/tests/heavy_tests.rs +0 -265
  389. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +0 -36
  390. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +0 -150
  391. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +0 -223
  392. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +0 -239
  393. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -90
  394. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +0 -314
  395. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +0 -151
  396. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +0 -902
  397. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
  398. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -60
  399. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -51
  400. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -51
  401. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -64
  402. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -47
  403. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -669
  404. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -54
  405. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -92
  406. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +0 -228
  407. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +0 -94
  408. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -171
  409. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +0 -85
  410. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -120
  411. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +0 -77
  412. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +0 -596
  413. data/bridge/sdk-core/tests/main.rs +0 -103
  414. data/bridge/sdk-core/tests/runner.rs +0 -132
  415. data/bridge/sdk-core/tests/wf_input_replay.rs +0 -32
  416. data/bridge/src/connection.rs +0 -202
  417. data/bridge/src/lib.rs +0 -494
  418. data/bridge/src/runtime.rs +0 -54
  419. data/bridge/src/test_server.rs +0 -153
  420. data/bridge/src/worker.rs +0 -197
  421. data/ext/Rakefile +0 -9
  422. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +0 -14
  423. data/lib/gen/temporal/api/batch/v1/message_pb.rb +0 -50
  424. data/lib/gen/temporal/api/command/v1/message_pb.rb +0 -160
  425. data/lib/gen/temporal/api/common/v1/message_pb.rb +0 -73
  426. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +0 -33
  427. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +0 -37
  428. data/lib/gen/temporal/api/enums/v1/common_pb.rb +0 -42
  429. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +0 -68
  430. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +0 -79
  431. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +0 -37
  432. data/lib/gen/temporal/api/enums/v1/query_pb.rb +0 -31
  433. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +0 -24
  434. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +0 -28
  435. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +0 -30
  436. data/lib/gen/temporal/api/enums/v1/update_pb.rb +0 -25
  437. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +0 -89
  438. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +0 -84
  439. data/lib/gen/temporal/api/failure/v1/message_pb.rb +0 -83
  440. data/lib/gen/temporal/api/filter/v1/message_pb.rb +0 -40
  441. data/lib/gen/temporal/api/history/v1/message_pb.rb +0 -498
  442. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +0 -64
  443. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +0 -88
  444. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +0 -20
  445. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +0 -30
  446. data/lib/gen/temporal/api/query/v1/message_pb.rb +0 -38
  447. data/lib/gen/temporal/api/replication/v1/message_pb.rb +0 -37
  448. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +0 -149
  449. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +0 -23
  450. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +0 -73
  451. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +0 -21
  452. data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -72
  453. data/lib/gen/temporal/api/version/v1/message_pb.rb +0 -41
  454. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +0 -111
  455. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +0 -798
  456. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +0 -20
  457. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +0 -62
  458. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +0 -61
  459. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +0 -61
  460. data/lib/gen/temporal/sdk/core/common/common_pb.rb +0 -26
  461. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +0 -40
  462. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +0 -31
  463. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +0 -171
  464. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +0 -200
  465. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +0 -41
  466. data/lib/temporalio/bridge/connect_options.rb +0 -15
  467. data/lib/temporalio/bridge/error.rb +0 -8
  468. data/lib/temporalio/bridge/retry_config.rb +0 -24
  469. data/lib/temporalio/bridge/tls_options.rb +0 -19
  470. data/lib/temporalio/bridge.rb +0 -14
  471. data/lib/temporalio/client/implementation.rb +0 -340
  472. data/lib/temporalio/connection/retry_config.rb +0 -44
  473. data/lib/temporalio/connection/service.rb +0 -20
  474. data/lib/temporalio/connection/test_service.rb +0 -92
  475. data/lib/temporalio/connection/tls_options.rb +0 -51
  476. data/lib/temporalio/connection/workflow_service.rb +0 -731
  477. data/lib/temporalio/connection.rb +0 -86
  478. data/lib/temporalio/data_converter.rb +0 -191
  479. data/lib/temporalio/error/workflow_failure.rb +0 -19
  480. data/lib/temporalio/errors.rb +0 -40
  481. data/lib/temporalio/failure_converter/base.rb +0 -26
  482. data/lib/temporalio/failure_converter/basic.rb +0 -319
  483. data/lib/temporalio/failure_converter.rb +0 -7
  484. data/lib/temporalio/interceptor/activity_inbound.rb +0 -22
  485. data/lib/temporalio/interceptor/activity_outbound.rb +0 -24
  486. data/lib/temporalio/interceptor/chain.rb +0 -28
  487. data/lib/temporalio/interceptor/client.rb +0 -127
  488. data/lib/temporalio/interceptor.rb +0 -22
  489. data/lib/temporalio/payload_codec/base.rb +0 -32
  490. data/lib/temporalio/payload_converter/base.rb +0 -24
  491. data/lib/temporalio/payload_converter/bytes.rb +0 -27
  492. data/lib/temporalio/payload_converter/composite.rb +0 -49
  493. data/lib/temporalio/payload_converter/encoding_base.rb +0 -35
  494. data/lib/temporalio/payload_converter/json.rb +0 -26
  495. data/lib/temporalio/payload_converter/nil.rb +0 -26
  496. data/lib/temporalio/payload_converter.rb +0 -14
  497. data/lib/temporalio/retry_state.rb +0 -35
  498. data/lib/temporalio/testing/time_skipping_handle.rb +0 -32
  499. data/lib/temporalio/testing/time_skipping_interceptor.rb +0 -23
  500. data/lib/temporalio/timeout_type.rb +0 -29
  501. data/lib/temporalio/worker/activity_runner.rb +0 -114
  502. data/lib/temporalio/worker/activity_worker.rb +0 -164
  503. data/lib/temporalio/worker/reactor.rb +0 -46
  504. data/lib/temporalio/worker/runner.rb +0 -63
  505. data/lib/temporalio/worker/sync_worker.rb +0 -124
  506. data/lib/temporalio/worker/thread_pool_executor.rb +0 -51
  507. data/lib/temporalio/workflow/async.rb +0 -46
  508. data/lib/temporalio/workflow/execution_info.rb +0 -54
  509. data/lib/temporalio/workflow/execution_status.rb +0 -36
  510. data/lib/temporalio/workflow/id_reuse_policy.rb +0 -36
  511. data/lib/temporalio/workflow/query_reject_condition.rb +0 -33
  512. data/lib/thermite_patch.rb +0 -33
  513. data/sig/async.rbs +0 -17
  514. data/sig/protobuf.rbs +0 -16
  515. data/sig/protos/dependencies/gogoproto/gogo.rbs +0 -914
  516. data/sig/protos/google/protobuf/any.rbs +0 -157
  517. data/sig/protos/google/protobuf/descriptor.rbs +0 -2825
  518. data/sig/protos/google/protobuf/duration.rbs +0 -114
  519. data/sig/protos/google/protobuf/empty.rbs +0 -36
  520. data/sig/protos/google/protobuf/timestamp.rbs +0 -145
  521. data/sig/protos/google/protobuf/wrappers.rbs +0 -358
  522. data/sig/protos/temporal/api/batch/v1/message.rbs +0 -300
  523. data/sig/protos/temporal/api/command/v1/message.rbs +0 -1399
  524. data/sig/protos/temporal/api/common/v1/message.rbs +0 -528
  525. data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +0 -79
  526. data/sig/protos/temporal/api/enums/v1/command_type.rbs +0 -68
  527. data/sig/protos/temporal/api/enums/v1/common.rbs +0 -118
  528. data/sig/protos/temporal/api/enums/v1/event_type.rbs +0 -264
  529. data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +0 -277
  530. data/sig/protos/temporal/api/enums/v1/namespace.rbs +0 -108
  531. data/sig/protos/temporal/api/enums/v1/query.rbs +0 -81
  532. data/sig/protos/temporal/api/enums/v1/reset.rbs +0 -44
  533. data/sig/protos/temporal/api/enums/v1/schedule.rbs +0 -72
  534. data/sig/protos/temporal/api/enums/v1/task_queue.rbs +0 -92
  535. data/sig/protos/temporal/api/enums/v1/update.rbs +0 -64
  536. data/sig/protos/temporal/api/enums/v1/workflow.rbs +0 -371
  537. data/sig/protos/temporal/api/errordetails/v1/message.rbs +0 -551
  538. data/sig/protos/temporal/api/failure/v1/message.rbs +0 -581
  539. data/sig/protos/temporal/api/filter/v1/message.rbs +0 -171
  540. data/sig/protos/temporal/api/history/v1/message.rbs +0 -4609
  541. data/sig/protos/temporal/api/namespace/v1/message.rbs +0 -410
  542. data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +0 -643
  543. data/sig/protos/temporal/api/operatorservice/v1/service.rbs +0 -17
  544. data/sig/protos/temporal/api/protocol/v1/message.rbs +0 -84
  545. data/sig/protos/temporal/api/query/v1/message.rbs +0 -182
  546. data/sig/protos/temporal/api/replication/v1/message.rbs +0 -148
  547. data/sig/protos/temporal/api/schedule/v1/message.rbs +0 -1488
  548. data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +0 -110
  549. data/sig/protos/temporal/api/taskqueue/v1/message.rbs +0 -486
  550. data/sig/protos/temporal/api/testservice/v1/request_response.rbs +0 -249
  551. data/sig/protos/temporal/api/testservice/v1/service.rbs +0 -15
  552. data/sig/protos/temporal/api/update/v1/message.rbs +0 -489
  553. data/sig/protos/temporal/api/version/v1/message.rbs +0 -184
  554. data/sig/protos/temporal/api/workflow/v1/message.rbs +0 -824
  555. data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +0 -7250
  556. data/sig/protos/temporal/api/workflowservice/v1/service.rbs +0 -22
  557. data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +0 -380
  558. data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +0 -386
  559. data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +0 -323
  560. data/sig/protos/temporal/sdk/core/common/common.rbs +0 -62
  561. data/sig/protos/temporal/sdk/core/core_interface.rbs +0 -101
  562. data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +0 -119
  563. data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +0 -1473
  564. data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +0 -1784
  565. data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +0 -180
  566. data/sig/ruby.rbs +0 -12
  567. data/sig/temporalio/activity/context.rbs +0 -29
  568. data/sig/temporalio/activity/info.rbs +0 -43
  569. data/sig/temporalio/activity.rbs +0 -19
  570. data/sig/temporalio/bridge/connect_options.rbs +0 -19
  571. data/sig/temporalio/bridge/error.rbs +0 -8
  572. data/sig/temporalio/bridge/retry_config.rbs +0 -21
  573. data/sig/temporalio/bridge/tls_options.rbs +0 -17
  574. data/sig/temporalio/bridge.rbs +0 -71
  575. data/sig/temporalio/client/implementation.rbs +0 -38
  576. data/sig/temporalio/client/workflow_handle.rbs +0 -41
  577. data/sig/temporalio/client.rbs +0 -35
  578. data/sig/temporalio/connection/retry_config.rbs +0 -37
  579. data/sig/temporalio/connection/service.rbs +0 -14
  580. data/sig/temporalio/connection/test_service.rbs +0 -13
  581. data/sig/temporalio/connection/tls_options.rbs +0 -43
  582. data/sig/temporalio/connection/workflow_service.rbs +0 -48
  583. data/sig/temporalio/connection.rbs +0 -30
  584. data/sig/temporalio/data_converter.rbs +0 -35
  585. data/sig/temporalio/error/failure.rbs +0 -121
  586. data/sig/temporalio/error/workflow_failure.rbs +0 -9
  587. data/sig/temporalio/errors.rbs +0 -36
  588. data/sig/temporalio/failure_converter/base.rbs +0 -12
  589. data/sig/temporalio/failure_converter/basic.rbs +0 -86
  590. data/sig/temporalio/failure_converter.rbs +0 -5
  591. data/sig/temporalio/interceptor/activity_inbound.rbs +0 -21
  592. data/sig/temporalio/interceptor/activity_outbound.rbs +0 -10
  593. data/sig/temporalio/interceptor/chain.rbs +0 -24
  594. data/sig/temporalio/interceptor/client.rbs +0 -148
  595. data/sig/temporalio/interceptor.rbs +0 -6
  596. data/sig/temporalio/payload_codec/base.rbs +0 -12
  597. data/sig/temporalio/payload_converter/base.rbs +0 -12
  598. data/sig/temporalio/payload_converter/bytes.rbs +0 -9
  599. data/sig/temporalio/payload_converter/composite.rbs +0 -19
  600. data/sig/temporalio/payload_converter/encoding_base.rbs +0 -14
  601. data/sig/temporalio/payload_converter/json.rbs +0 -9
  602. data/sig/temporalio/payload_converter/nil.rbs +0 -9
  603. data/sig/temporalio/payload_converter.rbs +0 -5
  604. data/sig/temporalio/retry_policy.rbs +0 -25
  605. data/sig/temporalio/retry_state.rbs +0 -20
  606. data/sig/temporalio/runtime.rbs +0 -12
  607. data/sig/temporalio/testing/time_skipping_handle.rbs +0 -15
  608. data/sig/temporalio/testing/time_skipping_interceptor.rbs +0 -13
  609. data/sig/temporalio/testing/workflow_environment.rbs +0 -22
  610. data/sig/temporalio/testing.rbs +0 -35
  611. data/sig/temporalio/timeout_type.rbs +0 -15
  612. data/sig/temporalio/version.rbs +0 -3
  613. data/sig/temporalio/worker/activity_runner.rbs +0 -35
  614. data/sig/temporalio/worker/activity_worker.rbs +0 -44
  615. data/sig/temporalio/worker/reactor.rbs +0 -22
  616. data/sig/temporalio/worker/runner.rbs +0 -21
  617. data/sig/temporalio/worker/sync_worker.rbs +0 -23
  618. data/sig/temporalio/worker/thread_pool_executor.rbs +0 -23
  619. data/sig/temporalio/worker.rbs +0 -46
  620. data/sig/temporalio/workflow/async.rbs +0 -9
  621. data/sig/temporalio/workflow/execution_info.rbs +0 -55
  622. data/sig/temporalio/workflow/execution_status.rbs +0 -21
  623. data/sig/temporalio/workflow/future.rbs +0 -40
  624. data/sig/temporalio/workflow/id_reuse_policy.rbs +0 -15
  625. data/sig/temporalio/workflow/info.rbs +0 -55
  626. data/sig/temporalio/workflow/query_reject_condition.rbs +0 -14
  627. data/sig/temporalio.rbs +0 -2
  628. data/sig/thermite_patch.rbs +0 -15
@@ -1,659 +0,0 @@
1
- //! The patch machine can be difficult to follow. Refer to below table for behavior. The
2
- //! deprecated calls simply say "allowed" because if they returned a value, it's always true. Old
3
- //! code cannot exist in workflows which use the deprecated call.
4
- //!
5
- //! | History Has | Workflow Has | Outcome |
6
- //! |------------------------------|-----------------|------------------------------------------------------------------------------------|
7
- //! | not replaying | no patched | Nothing interesting. Versioning not involved. |
8
- //! | marker for change | no patched | No matching command / workflow does not support this version |
9
- //! | deprecated marker for change | no patched | Marker ignored, workflow continues as if it didn't exist |
10
- //! | replaying, no marker | no patched | Nothing interesting. Versioning not involved. |
11
- //! | not replaying | patched | Marker command sent to server and recorded. Call returns true |
12
- //! | marker for change | patched | Call returns true upon replay |
13
- //! | deprecated marker for change | patched | Call returns true upon replay |
14
- //! | replaying, no marker | patched | Call returns false upon replay |
15
- //! | not replaying | deprecate_patch | Marker command sent to server and recorded with deprecated flag. Call allowed |
16
- //! | marker for change | deprecate_patch | Call allowed |
17
- //! | deprecated marker for change | deprecate_patch | Call allowed |
18
- //! | replaying, no marker | deprecate_patch | Call allowed |
19
-
20
- use super::{
21
- workflow_machines::MachineResponse, Cancellable, EventInfo, NewMachineWithCommand,
22
- OnEventWrapper, WFMachinesAdapter, WFMachinesError,
23
- };
24
- use crate::{protosext::HistoryEventExt, worker::workflow::machines::HistEventData};
25
- use rustfsm::{fsm, TransitionResult};
26
- use std::convert::TryFrom;
27
- use temporal_sdk_core_protos::{
28
- constants::PATCH_MARKER_NAME,
29
- coresdk::common::build_has_change_marker_details,
30
- temporal::api::{
31
- command::v1::{Command, RecordMarkerCommandAttributes},
32
- enums::v1::CommandType,
33
- history::v1::HistoryEvent,
34
- },
35
- };
36
-
37
- fsm! {
38
- pub(super) name PatchMachine;
39
- command PatchCommand;
40
- error WFMachinesError;
41
- shared_state SharedState;
42
-
43
- // Machine is created in either executing or replaying, and then immediately scheduled and
44
- // transitions to the command created state (creating the command in the process)
45
- Executing --(Schedule, on_schedule) --> MarkerCommandCreated;
46
- Replaying --(Schedule, on_schedule) --> MarkerCommandCreatedReplaying;
47
-
48
- // Pretty much nothing happens here - once we issue the command it is the responsibility of
49
- // machinery above us to notify lang SDK about the change. This is in order to allow the
50
- // change call to be sync and not have to wait for the command to resolve.
51
- MarkerCommandCreated --(CommandRecordMarker, on_command_record_marker) --> Notified;
52
- MarkerCommandCreatedReplaying --(CommandRecordMarker) --> Notified;
53
-
54
- // Once we've played back the marker recorded event, all we need to do is double-check that
55
- // it matched what we expected
56
- Notified --(MarkerRecorded(String), shared on_marker_recorded) --> MarkerCommandRecorded;
57
- }
58
-
59
- #[derive(Clone)]
60
- pub(super) struct SharedState {
61
- patch_id: String,
62
- }
63
-
64
- #[derive(Debug, derive_more::Display)]
65
- pub(super) enum PatchCommand {}
66
-
67
- /// Patch machines are created when the user invokes `has_change` (or whatever it may be named
68
- /// in that lang).
69
- ///
70
- /// `patch_id`: identifier of a particular change. All calls to get_version that share a change id
71
- /// are guaranteed to return the same value.
72
- /// `replaying_when_invoked`: If the workflow is replaying when this invocation occurs, this needs
73
- /// to be set to true.
74
- pub(super) fn has_change(
75
- patch_id: String,
76
- replaying_when_invoked: bool,
77
- deprecated: bool,
78
- ) -> NewMachineWithCommand {
79
- let (machine, command) =
80
- PatchMachine::new_scheduled(SharedState { patch_id }, replaying_when_invoked, deprecated);
81
- NewMachineWithCommand {
82
- command,
83
- machine: machine.into(),
84
- }
85
- }
86
-
87
- impl PatchMachine {
88
- fn new_scheduled(
89
- state: SharedState,
90
- replaying_when_invoked: bool,
91
- deprecated: bool,
92
- ) -> (Self, Command) {
93
- let initial_state = if replaying_when_invoked {
94
- Replaying {}.into()
95
- } else {
96
- Executing {}.into()
97
- };
98
- let cmd = Command {
99
- command_type: CommandType::RecordMarker as i32,
100
- attributes: Some(
101
- RecordMarkerCommandAttributes {
102
- marker_name: PATCH_MARKER_NAME.to_string(),
103
- details: build_has_change_marker_details(&state.patch_id, deprecated),
104
- header: None,
105
- failure: None,
106
- }
107
- .into(),
108
- ),
109
- };
110
- let mut machine = Self {
111
- state: initial_state,
112
- shared_state: state,
113
- };
114
- OnEventWrapper::on_event_mut(&mut machine, PatchMachineEvents::Schedule)
115
- .expect("Patch machine scheduling doesn't fail");
116
-
117
- (machine, cmd)
118
- }
119
- }
120
-
121
- #[derive(Default, Clone)]
122
- pub(super) struct Executing {}
123
-
124
- impl Executing {
125
- pub(super) fn on_schedule(self) -> PatchMachineTransition<MarkerCommandCreated> {
126
- TransitionResult::default()
127
- }
128
- }
129
-
130
- #[derive(Default, Clone)]
131
- pub(super) struct MarkerCommandCreated {}
132
-
133
- impl MarkerCommandCreated {
134
- pub(super) fn on_command_record_marker(self) -> PatchMachineTransition<Notified> {
135
- TransitionResult::commands(vec![])
136
- }
137
- }
138
-
139
- #[derive(Default, Clone)]
140
- pub(super) struct MarkerCommandCreatedReplaying {}
141
-
142
- #[derive(Default, Clone)]
143
- pub(super) struct MarkerCommandRecorded {}
144
-
145
- #[derive(Default, Clone)]
146
- pub(super) struct Replaying {}
147
-
148
- impl Replaying {
149
- pub(super) fn on_schedule(self) -> PatchMachineTransition<MarkerCommandCreatedReplaying> {
150
- TransitionResult::default()
151
- }
152
- }
153
-
154
- #[derive(Default, Clone)]
155
- pub(super) struct Notified {}
156
- impl From<MarkerCommandCreatedReplaying> for Notified {
157
- fn from(_: MarkerCommandCreatedReplaying) -> Self {
158
- Self::default()
159
- }
160
- }
161
- impl Notified {
162
- pub(super) fn on_marker_recorded(
163
- self,
164
- dat: SharedState,
165
- id: String,
166
- ) -> PatchMachineTransition<MarkerCommandRecorded> {
167
- if id != dat.patch_id {
168
- return TransitionResult::Err(WFMachinesError::Nondeterminism(format!(
169
- "Change id {} does not match expected id {}",
170
- id, dat.patch_id
171
- )));
172
- }
173
- TransitionResult::default()
174
- }
175
- }
176
-
177
- impl WFMachinesAdapter for PatchMachine {
178
- fn adapt_response(
179
- &self,
180
- _my_command: Self::Command,
181
- _event_info: Option<EventInfo>,
182
- ) -> Result<Vec<MachineResponse>, WFMachinesError> {
183
- panic!("Patch machine does not produce commands")
184
- }
185
-
186
- fn matches_event(&self, event: &HistoryEvent) -> bool {
187
- event.get_patch_marker_details().is_some()
188
- }
189
- }
190
-
191
- impl Cancellable for PatchMachine {}
192
-
193
- impl TryFrom<CommandType> for PatchMachineEvents {
194
- type Error = ();
195
-
196
- fn try_from(c: CommandType) -> Result<Self, Self::Error> {
197
- Ok(match c {
198
- CommandType::RecordMarker => Self::CommandRecordMarker,
199
- _ => return Err(()),
200
- })
201
- }
202
- }
203
-
204
- impl TryFrom<HistEventData> for PatchMachineEvents {
205
- type Error = WFMachinesError;
206
-
207
- fn try_from(e: HistEventData) -> Result<Self, Self::Error> {
208
- let e = e.event;
209
- match e.get_patch_marker_details() {
210
- Some((id, _)) => Ok(Self::MarkerRecorded(id)),
211
- _ => Err(WFMachinesError::Nondeterminism(format!(
212
- "Change machine cannot handle this event: {e}"
213
- ))),
214
- }
215
- }
216
- }
217
-
218
- #[cfg(test)]
219
- mod tests {
220
- use crate::{
221
- replay::TestHistoryBuilder,
222
- worker::workflow::{machines::WFMachinesError, ManagedWFFunc},
223
- };
224
- use rstest::rstest;
225
- use std::time::Duration;
226
- use temporal_sdk::{ActivityOptions, WfContext, WorkflowFunction};
227
- use temporal_sdk_core_protos::{
228
- constants::PATCH_MARKER_NAME,
229
- coresdk::{
230
- common::decode_change_marker_details,
231
- workflow_activation::{workflow_activation_job, NotifyHasPatch, WorkflowActivationJob},
232
- },
233
- temporal::api::{
234
- command::v1::{
235
- command::Attributes, RecordMarkerCommandAttributes,
236
- ScheduleActivityTaskCommandAttributes,
237
- },
238
- common::v1::ActivityType,
239
- enums::v1::{CommandType, EventType},
240
- history::v1::{
241
- ActivityTaskCompletedEventAttributes, ActivityTaskScheduledEventAttributes,
242
- ActivityTaskStartedEventAttributes, TimerFiredEventAttributes,
243
- },
244
- },
245
- };
246
-
247
- const MY_PATCH_ID: &str = "test_patch_id";
248
- #[derive(Eq, PartialEq, Copy, Clone, Debug)]
249
- enum MarkerType {
250
- Deprecated,
251
- NotDeprecated,
252
- NoMarker,
253
- }
254
-
255
- const ONE_SECOND: Duration = Duration::from_secs(1);
256
-
257
- /// EVENT_TYPE_WORKFLOW_EXECUTION_STARTED
258
- /// EVENT_TYPE_WORKFLOW_TASK_SCHEDULED
259
- /// EVENT_TYPE_WORKFLOW_TASK_STARTED
260
- /// EVENT_TYPE_WORKFLOW_TASK_COMPLETED
261
- /// EVENT_TYPE_MARKER_RECORDED (depending on marker_type)
262
- /// EVENT_TYPE_ACTIVITY_TASK_SCHEDULED
263
- /// EVENT_TYPE_ACTIVITY_TASK_STARTED
264
- /// EVENT_TYPE_ACTIVITY_TASK_COMPLETED
265
- /// EVENT_TYPE_WORKFLOW_TASK_SCHEDULED
266
- /// EVENT_TYPE_WORKFLOW_TASK_STARTED
267
- /// EVENT_TYPE_WORKFLOW_TASK_COMPLETED
268
- /// EVENT_TYPE_WORKFLOW_EXECUTION_COMPLETED
269
- fn patch_marker_single_activity(
270
- marker_type: MarkerType,
271
- version: usize,
272
- replay: bool,
273
- ) -> TestHistoryBuilder {
274
- let mut t = TestHistoryBuilder::default();
275
- t.add_by_type(EventType::WorkflowExecutionStarted);
276
- t.add_full_wf_task();
277
- match marker_type {
278
- MarkerType::Deprecated => t.add_has_change_marker(MY_PATCH_ID, true),
279
- MarkerType::NotDeprecated => t.add_has_change_marker(MY_PATCH_ID, false),
280
- MarkerType::NoMarker => {}
281
- };
282
-
283
- let activity_id = if replay {
284
- match (marker_type, version) {
285
- (_, 1) => "no_change",
286
- (MarkerType::NotDeprecated, 2) => "had_change",
287
- (MarkerType::Deprecated, 2) => "had_change",
288
- (MarkerType::NoMarker, 2) => "no_change",
289
- (_, 3) => "had_change",
290
- (_, 4) => "had_change",
291
- v => panic!("Nonsense marker / version combo {v:?}"),
292
- }
293
- } else {
294
- // If the workflow isn't replaying (we're creating history here for a workflow which
295
- // wasn't replaying at the time of scheduling the activity, and has done that, and now
296
- // we're feeding back the history it would have produced) then it always has the change,
297
- // except in v1.
298
- if version > 1 {
299
- "had_change"
300
- } else {
301
- "no_change"
302
- }
303
- };
304
-
305
- let scheduled_event_id = t.add(ActivityTaskScheduledEventAttributes {
306
- activity_id: activity_id.to_string(),
307
- ..Default::default()
308
- });
309
- let started_event_id = t.add(ActivityTaskStartedEventAttributes {
310
- scheduled_event_id,
311
- ..Default::default()
312
- });
313
- t.add(ActivityTaskCompletedEventAttributes {
314
- scheduled_event_id,
315
- started_event_id,
316
- ..Default::default()
317
- });
318
- t.add_full_wf_task();
319
- t.add_workflow_execution_completed();
320
- t
321
- }
322
-
323
- async fn v1(ctx: &mut WfContext) {
324
- ctx.activity(ActivityOptions {
325
- activity_id: Some("no_change".to_owned()),
326
- ..Default::default()
327
- })
328
- .await;
329
- }
330
-
331
- async fn v2(ctx: &mut WfContext) -> bool {
332
- if ctx.patched(MY_PATCH_ID) {
333
- ctx.activity(ActivityOptions {
334
- activity_id: Some("had_change".to_owned()),
335
- ..Default::default()
336
- })
337
- .await;
338
- true
339
- } else {
340
- ctx.activity(ActivityOptions {
341
- activity_id: Some("no_change".to_owned()),
342
- ..Default::default()
343
- })
344
- .await;
345
- false
346
- }
347
- }
348
-
349
- async fn v3(ctx: &mut WfContext) {
350
- ctx.deprecate_patch(MY_PATCH_ID);
351
- ctx.activity(ActivityOptions {
352
- activity_id: Some("had_change".to_owned()),
353
- ..Default::default()
354
- })
355
- .await;
356
- }
357
-
358
- async fn v4(ctx: &mut WfContext) {
359
- ctx.activity(ActivityOptions {
360
- activity_id: Some("had_change".to_owned()),
361
- ..Default::default()
362
- })
363
- .await;
364
- }
365
-
366
- fn patch_setup(
367
- replaying: bool,
368
- marker_type: MarkerType,
369
- workflow_version: usize,
370
- ) -> ManagedWFFunc {
371
- let wfn = WorkflowFunction::new(move |mut ctx: WfContext| async move {
372
- match workflow_version {
373
- 1 => {
374
- v1(&mut ctx).await;
375
- }
376
- 2 => {
377
- v2(&mut ctx).await;
378
- }
379
- 3 => {
380
- v3(&mut ctx).await;
381
- }
382
- 4 => {
383
- v4(&mut ctx).await;
384
- }
385
- _ => panic!("Invalid workflow version for test setup"),
386
- }
387
- Ok(().into())
388
- });
389
-
390
- let t = patch_marker_single_activity(marker_type, workflow_version, replaying);
391
- let histinfo = if replaying {
392
- t.get_full_history_info()
393
- } else {
394
- t.get_history_info(1)
395
- };
396
- ManagedWFFunc::new_from_update(histinfo.unwrap().into(), wfn, vec![])
397
- }
398
-
399
- #[rstest]
400
- #[case::v1_breaks_on_normal_marker(false, MarkerType::NotDeprecated, 1)]
401
- #[case::v1_accepts_dep_marker(false, MarkerType::Deprecated, 1)]
402
- #[case::v1_replay_breaks_on_normal_marker(true, MarkerType::NotDeprecated, 1)]
403
- #[case::v1_replay_accepts_dep_marker(true, MarkerType::Deprecated, 1)]
404
- #[case::v4_breaks_on_normal_marker(false, MarkerType::NotDeprecated, 4)]
405
- #[case::v4_accepts_dep_marker(false, MarkerType::Deprecated, 4)]
406
- #[case::v4_replay_breaks_on_normal_marker(true, MarkerType::NotDeprecated, 4)]
407
- #[case::v4_replay_accepts_dep_marker(true, MarkerType::Deprecated, 4)]
408
- #[tokio::test]
409
- async fn v1_and_v4_changes(
410
- #[case] replaying: bool,
411
- #[case] marker_type: MarkerType,
412
- #[case] wf_version: usize,
413
- ) {
414
- let mut wfm = patch_setup(replaying, marker_type, wf_version);
415
- // Start workflow activation
416
- wfm.get_next_activation().await.unwrap();
417
- let commands = wfm.get_server_commands().commands;
418
- assert_eq!(commands.len(), 1);
419
- assert_eq!(
420
- commands[0].command_type,
421
- CommandType::ScheduleActivityTask as i32
422
- );
423
- let act = if replaying {
424
- wfm.get_next_activation().await
425
- } else {
426
- // Feed more history
427
- wfm.new_history(
428
- patch_marker_single_activity(marker_type, wf_version, replaying)
429
- .get_full_history_info()
430
- .unwrap()
431
- .into(),
432
- )
433
- .await
434
- };
435
-
436
- if marker_type == MarkerType::Deprecated {
437
- let act = act.unwrap();
438
- // Activity is resolved
439
- assert_matches!(
440
- act.jobs.as_slice(),
441
- [WorkflowActivationJob {
442
- variant: Some(workflow_activation_job::Variant::ResolveActivity(_))
443
- }]
444
- );
445
- } else {
446
- // should explode b/c non-dep marker is present
447
- assert_matches!(act.unwrap_err(), WFMachinesError::Nondeterminism(_));
448
- }
449
-
450
- wfm.shutdown().await.unwrap();
451
- }
452
-
453
- #[rstest]
454
- #[case::v2_no_marker_old_path(false, MarkerType::NoMarker, 2)]
455
- #[case::v2_marker_new_path(false, MarkerType::NotDeprecated, 2)]
456
- #[case::v2_dep_marker_new_path(false, MarkerType::Deprecated, 2)]
457
- #[case::v2_replay_no_marker_old_path(true, MarkerType::NoMarker, 2)]
458
- #[case::v2_replay_marker_new_path(true, MarkerType::NotDeprecated, 2)]
459
- #[case::v2_replay_dep_marker_new_path(true, MarkerType::Deprecated, 2)]
460
- #[case::v3_no_marker_old_path(false, MarkerType::NoMarker, 3)]
461
- #[case::v3_marker_new_path(false, MarkerType::NotDeprecated, 3)]
462
- #[case::v3_dep_marker_new_path(false, MarkerType::Deprecated, 3)]
463
- #[case::v3_replay_no_marker_old_path(true, MarkerType::NoMarker, 3)]
464
- #[case::v3_replay_marker_new_path(true, MarkerType::NotDeprecated, 3)]
465
- #[case::v3_replay_dep_marker_new_path(true, MarkerType::Deprecated, 3)]
466
- #[tokio::test]
467
- async fn v2_and_v3_changes(
468
- #[case] replaying: bool,
469
- #[case] marker_type: MarkerType,
470
- #[case] wf_version: usize,
471
- ) {
472
- let mut wfm = patch_setup(replaying, marker_type, wf_version);
473
- let act = wfm.get_next_activation().await.unwrap();
474
- // replaying cases should immediately get a resolve change activation when marker is present
475
- if replaying && marker_type != MarkerType::NoMarker {
476
- assert_matches!(
477
- &act.jobs[1],
478
- WorkflowActivationJob {
479
- variant: Some(workflow_activation_job::Variant::NotifyHasPatch(
480
- NotifyHasPatch {
481
- patch_id,
482
- }
483
- ))
484
- } => patch_id == MY_PATCH_ID
485
- );
486
- } else {
487
- assert_eq!(act.jobs.len(), 1);
488
- }
489
- let commands = wfm.get_server_commands().commands;
490
- assert_eq!(commands.len(), 2);
491
- let dep_flag_expected = wf_version != 2;
492
- assert_matches!(
493
- commands[0].attributes.as_ref().unwrap(),
494
- Attributes::RecordMarkerCommandAttributes(
495
- RecordMarkerCommandAttributes { marker_name, details,.. })
496
-
497
- if marker_name == PATCH_MARKER_NAME
498
- && decode_change_marker_details(details).unwrap().1 == dep_flag_expected
499
- );
500
- // The only time the "old" timer should fire is in v2, replaying, without a marker.
501
- let expected_activity_id =
502
- if replaying && marker_type == MarkerType::NoMarker && wf_version == 2 {
503
- "no_change"
504
- } else {
505
- "had_change"
506
- };
507
- assert_matches!(
508
- commands[1].attributes.as_ref().unwrap(),
509
- Attributes::ScheduleActivityTaskCommandAttributes(
510
- ScheduleActivityTaskCommandAttributes { activity_id, .. }
511
- )
512
- if activity_id == expected_activity_id
513
- );
514
-
515
- let act = if replaying {
516
- wfm.get_next_activation().await
517
- } else {
518
- // Feed more history. Since we are *not* replaying, we *always* "have" the change
519
- // and the history should have the has-change timer. v3 of course always has the change
520
- // regardless.
521
- wfm.new_history(
522
- patch_marker_single_activity(marker_type, wf_version, replaying)
523
- .get_full_history_info()
524
- .unwrap()
525
- .into(),
526
- )
527
- .await
528
- };
529
-
530
- let act = act.unwrap();
531
- // Activity is resolved
532
- assert_matches!(
533
- act.jobs.as_slice(),
534
- [WorkflowActivationJob {
535
- variant: Some(workflow_activation_job::Variant::ResolveActivity(_))
536
- }]
537
- );
538
-
539
- wfm.shutdown().await.unwrap();
540
- }
541
-
542
- #[rstest]
543
- #[case::has_change_replay(true, true)]
544
- #[case::no_change_replay(false, true)]
545
- #[case::has_change_inc(true, false)]
546
- // The false-false case doesn't make sense, as the incremental cases act as if working against
547
- // a sticky queue, and it'd be impossible for a worker with the call to get an incremental
548
- // history that then suddenly doesn't have the marker.
549
- #[tokio::test]
550
- async fn same_change_multiple_spots(#[case] have_marker_in_hist: bool, #[case] replay: bool) {
551
- let wfn = WorkflowFunction::new(move |ctx: WfContext| async move {
552
- if ctx.patched(MY_PATCH_ID) {
553
- ctx.activity(ActivityOptions::default()).await;
554
- } else {
555
- ctx.timer(ONE_SECOND).await;
556
- }
557
- ctx.timer(ONE_SECOND).await;
558
- if ctx.patched(MY_PATCH_ID) {
559
- ctx.activity(ActivityOptions::default()).await;
560
- } else {
561
- ctx.timer(ONE_SECOND).await;
562
- }
563
- Ok(().into())
564
- });
565
-
566
- let mut t = TestHistoryBuilder::default();
567
- t.add_by_type(EventType::WorkflowExecutionStarted);
568
- t.add_full_wf_task();
569
- if have_marker_in_hist {
570
- t.add_has_change_marker(MY_PATCH_ID, false);
571
- let scheduled_event_id = t.add(ActivityTaskScheduledEventAttributes {
572
- activity_id: "1".to_owned(),
573
- activity_type: Some(ActivityType {
574
- name: "".to_string(),
575
- }),
576
- ..Default::default()
577
- });
578
- let started_event_id = t.add(ActivityTaskStartedEventAttributes {
579
- scheduled_event_id,
580
- ..Default::default()
581
- });
582
- t.add(ActivityTaskCompletedEventAttributes {
583
- scheduled_event_id,
584
- started_event_id,
585
- ..Default::default()
586
- });
587
- t.add_full_wf_task();
588
- let timer_started_event_id = t.add_by_type(EventType::TimerStarted);
589
- t.add(TimerFiredEventAttributes {
590
- started_event_id: timer_started_event_id,
591
- timer_id: "1".to_owned(),
592
- });
593
- } else {
594
- let started_event_id = t.add_by_type(EventType::TimerStarted);
595
- t.add(TimerFiredEventAttributes {
596
- started_event_id,
597
- timer_id: "1".to_owned(),
598
- });
599
- t.add_full_wf_task();
600
- let timer_started_event_id = t.add_by_type(EventType::TimerStarted);
601
- t.add(TimerFiredEventAttributes {
602
- started_event_id: timer_started_event_id,
603
- timer_id: "2".to_owned(),
604
- });
605
- }
606
- t.add_full_wf_task();
607
-
608
- if have_marker_in_hist {
609
- let scheduled_event_id = t.add(ActivityTaskScheduledEventAttributes {
610
- activity_id: "2".to_string(),
611
- activity_type: Some(ActivityType {
612
- name: "".to_string(),
613
- }),
614
- ..Default::default()
615
- });
616
- let started_event_id = t.add(ActivityTaskStartedEventAttributes {
617
- scheduled_event_id,
618
- ..Default::default()
619
- });
620
- t.add(ActivityTaskCompletedEventAttributes {
621
- scheduled_event_id,
622
- started_event_id,
623
- ..Default::default()
624
- });
625
- } else {
626
- let started_event_id = t.add_by_type(EventType::TimerStarted);
627
- t.add(TimerFiredEventAttributes {
628
- started_event_id,
629
- timer_id: "3".to_owned(),
630
- });
631
- }
632
- t.add_full_wf_task();
633
- t.add_workflow_execution_completed();
634
-
635
- let mut wfm = if replay {
636
- let mut wfm = ManagedWFFunc::new_from_update(
637
- t.get_full_history_info().unwrap().into(),
638
- wfn,
639
- vec![],
640
- );
641
- // Errors would appear as nondeterminism problems
642
- wfm.process_all_activations().await.unwrap();
643
- wfm
644
- } else {
645
- let mut wfm =
646
- ManagedWFFunc::new_from_update(t.get_history_info(1).unwrap().into(), wfn, vec![]);
647
- wfm.process_all_activations().await.unwrap();
648
- for i in 2..=4 {
649
- wfm.new_history(t.get_history_info(i).unwrap().into())
650
- .await
651
- .unwrap();
652
- wfm.process_all_activations().await.unwrap();
653
- }
654
- wfm
655
- };
656
-
657
- wfm.shutdown().await.unwrap();
658
- }
659
- }