temporalio 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (469) 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 -38
  132. metadata +131 -596
  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 -23
@@ -1,33 +0,0 @@
1
- [package]
2
- name = "temporal-sdk-core-api"
3
- version = "0.1.0"
4
- edition = "2021"
5
- authors = ["Spencer Judge <spencer@temporal.io>"]
6
- license-file = "LICENSE.txt"
7
- description = "Interface definitions for the Temporal Core SDK"
8
- homepage = "https://temporal.io/"
9
- repository = "https://github.com/temporalio/sdk-core"
10
- keywords = ["temporal", "workflow"]
11
- categories = ["development-tools"]
12
-
13
- # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
14
-
15
- [dependencies]
16
- async-trait = "0.1"
17
- derive_builder = "0.12"
18
- prost-types = "0.11"
19
- serde = { version = "1.0", default_features = false, features = ["derive"] }
20
- serde_json = "1.0"
21
- thiserror = "1.0"
22
- tokio = "1.24"
23
- tonic = "0.8"
24
- tracing-core = "0.1"
25
- url = "2.3"
26
-
27
- [dependencies.temporal-sdk-core-protos]
28
- path = "../sdk-core-protos"
29
- version = "0.1"
30
-
31
- [dependencies.temporal-client]
32
- path = "../client"
33
- version = "0.1"
@@ -1,23 +0,0 @@
1
- Temporal Core SDK
2
-
3
- The MIT License
4
-
5
- Copyright (c) 2021 Temporal Technologies, Inc. All Rights Reserved
6
-
7
- Permission is hereby granted, free of charge, to any person obtaining a copy
8
- of this software and associated documentation files (the "Software"), to deal
9
- in the Software without restriction, including without limitation the rights
10
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
- copies of the Software, and to permit persons to whom the Software is
12
- furnished to do so, subject to the following conditions:
13
-
14
- The above copyright notice and this permission notice shall be included in all
15
- copies or substantial portions of the Software.
16
-
17
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
- SOFTWARE.
@@ -1,62 +0,0 @@
1
- //! Error types exposed by public APIs
2
-
3
- use temporal_sdk_core_protos::coresdk::activity_result::ActivityExecutionResult;
4
-
5
- /// Errors thrown by [crate::Worker::poll_workflow_activation]
6
- #[derive(thiserror::Error, Debug)]
7
- pub enum PollWfError {
8
- /// [crate::Worker::shutdown] was called, and there are no more replay tasks to be handled. Lang
9
- /// must call [crate::Worker::complete_workflow_activation] for any remaining tasks, and then may
10
- /// exit.
11
- #[error("Core is shut down and there are no more workflow replay tasks")]
12
- ShutDown,
13
- /// Unhandled error when calling the temporal server. Core will attempt to retry any non-fatal
14
- /// errors, so lang should consider this fatal.
15
- #[error("Unhandled grpc error when workflow polling: {0:?}")]
16
- TonicError(#[from] tonic::Status),
17
- /// Unhandled error when completing a workflow during a poll -- this can happen when there is no
18
- /// work for lang to perform, but the server sent us a workflow task (EX: An activity completed
19
- /// even though we already cancelled it)
20
- #[error("Unhandled error when auto-completing workflow task: {0:?}")]
21
- AutocompleteError(#[from] CompleteWfError),
22
- }
23
-
24
- /// Errors thrown by [crate::Worker::poll_activity_task]
25
- #[derive(thiserror::Error, Debug)]
26
- pub enum PollActivityError {
27
- /// [crate::Worker::shutdown] was called, we will no longer fetch new activity tasks. Lang must
28
- /// ensure it is finished with any workflow replay, see [PollWfError::ShutDown]
29
- #[error("Core is shut down")]
30
- ShutDown,
31
- /// Unhandled error when calling the temporal server. Core will attempt to retry any non-fatal
32
- /// errors, so lang should consider this fatal.
33
- #[error("Unhandled grpc error when activity polling: {0:?}")]
34
- TonicError(#[from] tonic::Status),
35
- }
36
-
37
- /// Errors thrown by [crate::Worker::complete_workflow_activation]
38
- #[derive(thiserror::Error, Debug)]
39
- #[allow(clippy::large_enum_variant)]
40
- pub enum CompleteWfError {
41
- /// Lang SDK sent us a malformed workflow completion. This likely means a bug in the lang sdk.
42
- #[error("Lang SDK sent us a malformed workflow completion for run ({run_id}): {reason}")]
43
- MalformedWorkflowCompletion {
44
- /// Reason the completion was malformed
45
- reason: String,
46
- /// The run associated with the completion
47
- run_id: String,
48
- },
49
- }
50
-
51
- /// Errors thrown by [crate::Worker::complete_activity_task]
52
- #[derive(thiserror::Error, Debug)]
53
- pub enum CompleteActivityError {
54
- /// Lang SDK sent us a malformed activity completion. This likely means a bug in the lang sdk.
55
- #[error("Lang SDK sent us a malformed activity completion ({reason}): {completion:?}")]
56
- MalformedActivityCompletion {
57
- /// Reason the completion was malformed
58
- reason: String,
59
- /// The completion, which may not be included to avoid unnecessary copies.
60
- completion: Option<ActivityExecutionResult>,
61
- },
62
- }
@@ -1,113 +0,0 @@
1
- pub mod errors;
2
- pub mod telemetry;
3
- pub mod worker;
4
-
5
- use crate::{
6
- errors::{CompleteActivityError, CompleteWfError, PollActivityError, PollWfError},
7
- worker::WorkerConfig,
8
- };
9
- use temporal_sdk_core_protos::coresdk::{
10
- activity_task::ActivityTask, workflow_activation::WorkflowActivation,
11
- workflow_completion::WorkflowActivationCompletion, ActivityHeartbeat, ActivityTaskCompletion,
12
- };
13
-
14
- /// This trait is the primary way by which language specific SDKs interact with the core SDK.
15
- /// It represents one worker, which has a (potentially shared) client for connecting to the service
16
- /// and is bound to a specific task queue.
17
- #[async_trait::async_trait]
18
- pub trait Worker: Send + Sync {
19
- /// Ask the worker for some work, returning a [WorkflowActivation]. It is then the language
20
- /// SDK's responsibility to call the appropriate workflow code with the provided inputs. Blocks
21
- /// indefinitely until such work is available or [Worker::shutdown] is called.
22
- ///
23
- /// It is important to understand that all activations must be responded to. There can only
24
- /// be one outstanding activation for a particular run of a workflow at any time. If an
25
- /// activation is not responded to, it will cause that workflow to become stuck forever.
26
- ///
27
- /// Activations that contain only a `remove_from_cache` job should not cause the workflow code
28
- /// to be invoked and may be responded to with an empty command list. Eviction jobs may also
29
- /// appear with other jobs, but will always appear last in the job list. In this case it is
30
- /// expected that the workflow code will be invoked, and the response produced as normal, but
31
- /// the caller should evict the run after doing so.
32
- ///
33
- /// It is rarely a good idea to call poll concurrently. It handles polling the server
34
- /// concurrently internally.
35
- async fn poll_workflow_activation(&self) -> Result<WorkflowActivation, PollWfError>;
36
-
37
- /// Ask the worker for some work, returning an [ActivityTask]. It is then the language SDK's
38
- /// responsibility to call the appropriate activity code with the provided inputs. Blocks
39
- /// indefinitely until such work is available or [Worker::shutdown] is called.
40
- ///
41
- /// The returned activation is guaranteed to be for the same task queue / worker which was
42
- /// provided as the `task_queue` argument.
43
- ///
44
- /// It is rarely a good idea to call poll concurrently. It handles polling the server
45
- /// concurrently internally.
46
- async fn poll_activity_task(&self) -> Result<ActivityTask, PollActivityError>;
47
-
48
- /// Tell the worker that a workflow activation has completed. May (and should) be freely called
49
- /// concurrently. The future may take some time to resolve, as fetching more events might be
50
- /// necessary for completion to... complete - thus SDK implementers should make sure they do
51
- /// not serialize completions.
52
- async fn complete_workflow_activation(
53
- &self,
54
- completion: WorkflowActivationCompletion,
55
- ) -> Result<(), CompleteWfError>;
56
-
57
- /// Tell the worker that an activity has finished executing. May (and should) be freely called
58
- /// concurrently.
59
- async fn complete_activity_task(
60
- &self,
61
- completion: ActivityTaskCompletion,
62
- ) -> Result<(), CompleteActivityError>;
63
-
64
- /// Notify the Temporal service that an activity is still alive. Long running activities that
65
- /// take longer than `activity_heartbeat_timeout` to finish must call this function in order to
66
- /// report progress, otherwise the activity will timeout and a new attempt will be scheduled.
67
- ///
68
- /// The first heartbeat request will be sent immediately, subsequent rapid calls to this
69
- /// function will result in heartbeat requests being aggregated and the last one received during
70
- /// the aggregation period will be sent to the server, where that period is defined as half the
71
- /// heartbeat timeout.
72
- ///
73
- /// Unlike Java/Go SDKs we do not return cancellation status as part of heartbeat response and
74
- /// instead send it as a separate activity task to the lang, decoupling heartbeat and
75
- /// cancellation processing.
76
- ///
77
- /// For now activity still need to send heartbeats if they want to receive cancellation
78
- /// requests. In the future we will change this and will dispatch cancellations more
79
- /// proactively. Note that this function does not block on the server call and returns
80
- /// immediately. Underlying validation errors are swallowed and logged, this has been agreed to
81
- /// be optimal behavior for the user as we don't want to break activity execution due to badly
82
- /// configured heartbeat options.
83
- fn record_activity_heartbeat(&self, details: ActivityHeartbeat);
84
-
85
- /// Request that a workflow be evicted by its run id. This will generate a workflow activation
86
- /// with the eviction job inside it to be eventually returned by
87
- /// [Worker::poll_workflow_activation]. If the workflow had any existing outstanding activations,
88
- /// such activations are invalidated and subsequent completions of them will do nothing and log
89
- /// a warning.
90
- fn request_workflow_eviction(&self, run_id: &str);
91
-
92
- /// Return this worker's config
93
- fn get_config(&self) -> &WorkerConfig;
94
-
95
- /// Initiate shutdown. See [Worker::shutdown], this is just a sync version that starts the
96
- /// process. You can then wait on `shutdown` or [Worker::finalize_shutdown].
97
- fn initiate_shutdown(&self);
98
-
99
- /// Initiates async shutdown procedure, eventually ceases all polling of the server and shuts
100
- /// down this worker. [Worker::poll_workflow_activation] should be called until it
101
- /// returns [PollWfError::ShutDown] to ensure that any workflows which are still undergoing
102
- /// replay have an opportunity to finish. This means that the lang sdk will need to call
103
- /// [Worker::complete_workflow_activation] for those workflows until they are done. At that point,
104
- /// the lang SDK can end the process, or drop the [Worker] instance, which will close the
105
- /// connection.
106
- async fn shutdown(&self);
107
-
108
- /// Completes shutdown and frees all resources. You should avoid simply dropping workers, as
109
- /// this does not allow async tasks to report any panics that may have occurred cleanly.
110
- ///
111
- /// This should be called only after [Worker::shutdown] has resolved.
112
- async fn finalize_shutdown(self);
113
- }
@@ -1,141 +0,0 @@
1
- use std::{
2
- collections::HashMap,
3
- net::SocketAddr,
4
- time::{Duration, SystemTime, UNIX_EPOCH},
5
- };
6
- use tracing_core::Level;
7
- use url::Url;
8
-
9
- /// Each core runtime instance has a telemetry subsystem associated with it, this trait defines the
10
- /// operations that lang might want to perform on that telemetry after it's initialized.
11
- pub trait CoreTelemetry {
12
- /// Each worker buffers logs that should be shuttled over to lang so that they may be rendered
13
- /// with the user's desired logging library. Use this function to grab the most recent buffered
14
- /// logs since the last time it was called. A fixed number of such logs are retained at maximum,
15
- /// with the oldest being dropped when full.
16
- ///
17
- /// Returns the list of logs from oldest to newest. Returns an empty vec if the feature is not
18
- /// configured.
19
- fn fetch_buffered_logs(&self) -> Vec<CoreLog>;
20
- }
21
-
22
- /// Telemetry configuration options. Construct with [TelemetryOptionsBuilder]
23
- #[derive(Debug, Clone, derive_builder::Builder)]
24
- #[non_exhaustive]
25
- pub struct TelemetryOptions {
26
- /// Optional trace exporter - set as None to disable.
27
- #[builder(setter(into, strip_option), default)]
28
- pub tracing: Option<TraceExportConfig>,
29
- /// Optional logger - set as None to disable.
30
- #[builder(setter(into, strip_option), default)]
31
- pub logging: Option<Logger>,
32
- /// Optional metrics exporter - set as None to disable.
33
- #[builder(setter(into, strip_option), default)]
34
- pub metrics: Option<MetricsExporter>,
35
-
36
- /// If set true, do not prefix metrics with `temporal_`. Will be removed eventually as
37
- /// the prefix is consistent with other SDKs.
38
- #[builder(default)]
39
- pub no_temporal_prefix_for_metrics: bool,
40
-
41
- /// Specifies the aggregation temporality for metric export. Defaults to cumulative.
42
- #[builder(default = "MetricTemporality::Cumulative")]
43
- pub metric_temporality: MetricTemporality,
44
- }
45
-
46
- /// Options for exporting to an OpenTelemetry Collector
47
- #[derive(Debug, Clone)]
48
- pub struct OtelCollectorOptions {
49
- /// The url of the OTel collector to export telemetry and metrics to. Lang SDK should also
50
- /// export to this same collector.
51
- pub url: Url,
52
- /// Optional set of HTTP headers to send to the Collector, e.g for authentication.
53
- pub headers: HashMap<String, String>,
54
- /// Optionally specify how frequently metrics should be exported. Defaults to 1 second.
55
- pub metric_periodicity: Option<Duration>,
56
- }
57
-
58
- /// Configuration for the external export of traces
59
- #[derive(Debug, Clone)]
60
- pub struct TraceExportConfig {
61
- /// An [EnvFilter](https://docs.rs/tracing-subscriber/latest/tracing_subscriber/struct.EnvFilter.html) filter string.
62
- pub filter: String,
63
- /// Where they should go
64
- pub exporter: TraceExporter,
65
- }
66
-
67
- /// Control where traces are exported.
68
- #[derive(Debug, Clone)]
69
- pub enum TraceExporter {
70
- /// Export traces to an OpenTelemetry Collector <https://opentelemetry.io/docs/collector/>.
71
- Otel(OtelCollectorOptions),
72
- }
73
-
74
- /// Control where metrics are exported
75
- #[derive(Debug, Clone)]
76
- pub enum MetricsExporter {
77
- /// Export metrics to an OpenTelemetry Collector <https://opentelemetry.io/docs/collector/>.
78
- Otel(OtelCollectorOptions),
79
- /// Expose metrics directly via an embedded http server bound to the provided address.
80
- Prometheus(SocketAddr),
81
- }
82
-
83
- /// Control where logs go
84
- #[derive(Debug, Clone)]
85
- pub enum Logger {
86
- /// Log directly to console.
87
- Console {
88
- /// An [EnvFilter](https://docs.rs/tracing-subscriber/latest/tracing_subscriber/struct.EnvFilter.html) filter string.
89
- filter: String,
90
- },
91
- /// Forward logs to Lang - collectable with `fetch_global_buffered_logs`.
92
- Forward {
93
- /// An [EnvFilter](https://docs.rs/tracing-subscriber/latest/tracing_subscriber/struct.EnvFilter.html) filter string.
94
- filter: String,
95
- },
96
- }
97
-
98
- /// Types of aggregation temporality for metric export.
99
- /// See: <https://github.com/open-telemetry/opentelemetry-specification/blob/ce50e4634efcba8da445cc23523243cb893905cb/specification/metrics/datamodel.md#temporality>
100
- #[derive(Debug, Clone, Copy)]
101
- pub enum MetricTemporality {
102
- /// Successive data points repeat the starting timestamp
103
- Cumulative,
104
- /// Successive data points advance the starting timestamp
105
- Delta,
106
- }
107
-
108
- impl Default for TelemetryOptions {
109
- fn default() -> Self {
110
- TelemetryOptionsBuilder::default().build().unwrap()
111
- }
112
- }
113
-
114
- /// A log line (which ultimately came from a tracing event) exported from Core->Lang
115
- #[derive(Debug)]
116
- pub struct CoreLog {
117
- /// The module within core this message originated from
118
- pub target: String,
119
- /// Log message
120
- pub message: String,
121
- /// Time log was generated (not when it was exported to lang)
122
- pub timestamp: SystemTime,
123
- /// Message level
124
- pub level: Level,
125
- /// Arbitrary k/v pairs (span k/vs are collapsed with event k/vs here). We could change this
126
- /// to include them in `span_contexts` instead, but there's probably not much value for log
127
- /// forwarding.
128
- pub fields: HashMap<String, serde_json::Value>,
129
- /// A list of the outermost to the innermost span names
130
- pub span_contexts: Vec<String>,
131
- }
132
-
133
- impl CoreLog {
134
- /// Return timestamp as ms since epoch
135
- pub fn millis_since_epoch(&self) -> u128 {
136
- self.timestamp
137
- .duration_since(UNIX_EPOCH)
138
- .unwrap_or(Duration::ZERO)
139
- .as_millis()
140
- }
141
- }
@@ -1,161 +0,0 @@
1
- use std::time::Duration;
2
- use tokio::sync::mpsc::UnboundedSender;
3
-
4
- /// Defines per-worker configuration options
5
- #[derive(Debug, Clone, derive_builder::Builder, serde::Serialize, serde::Deserialize)]
6
- #[builder(setter(into), build_fn(validate = "Self::validate"))]
7
- #[non_exhaustive]
8
- pub struct WorkerConfig {
9
- /// The Temporal service namespace this worker is bound to
10
- pub namespace: String,
11
- /// What task queue will this worker poll from? This task queue name will be used for both
12
- /// workflow and activity polling.
13
- pub task_queue: String,
14
- /// A string that should be unique to the set of code this worker uses. IE: All the workflow,
15
- /// activity, interceptor, and data converter code.
16
- pub worker_build_id: String,
17
- /// A human-readable string that can identify this worker. Using something like sdk version
18
- /// and host name is a good default. If set, overrides the identity set (if any) on the client
19
- /// used by this worker.
20
- #[builder(default)]
21
- pub client_identity_override: Option<String>,
22
- /// If set nonzero, workflows will be cached and sticky task queues will be used, meaning that
23
- /// history updates are applied incrementally to suspended instances of workflow execution.
24
- /// Workflows are evicted according to a least-recently-used policy one the cache maximum is
25
- /// reached. Workflows may also be explicitly evicted at any time, or as a result of errors
26
- /// or failures.
27
- #[builder(default = "0")]
28
- pub max_cached_workflows: usize,
29
- /// The maximum allowed number of workflow tasks that will ever be given to this worker at one
30
- /// time. Note that one workflow task may require multiple activations - so the WFT counts as
31
- /// "outstanding" until all activations it requires have been completed.
32
- ///
33
- /// Cannot be larger than `max_cached_workflows`.
34
- #[builder(default = "100")]
35
- pub max_outstanding_workflow_tasks: usize,
36
- /// The maximum number of activity tasks that will ever be given to this worker concurrently
37
- #[builder(default = "100")]
38
- pub max_outstanding_activities: usize,
39
- /// The maximum number of local activity tasks that will ever be given to this worker
40
- /// concurrently
41
- #[builder(default = "100")]
42
- pub max_outstanding_local_activities: usize,
43
- /// Maximum number of concurrent poll workflow task requests we will perform at a time on this
44
- /// worker's task queue. See also [WorkerConfig::nonsticky_to_sticky_poll_ratio]. Must be at
45
- /// least 1.
46
- #[builder(default = "5")]
47
- pub max_concurrent_wft_polls: usize,
48
- /// [WorkerConfig::max_concurrent_wft_polls] * this number = the number of max pollers that will
49
- /// be allowed for the nonsticky queue when sticky tasks are enabled. If both defaults are used,
50
- /// the sticky queue will allow 4 max pollers while the nonsticky queue will allow one. The
51
- /// minimum for either poller is 1, so if `max_concurrent_wft_polls` is 1 and sticky queues are
52
- /// enabled, there will be 2 concurrent polls.
53
- #[builder(default = "0.2")]
54
- pub nonsticky_to_sticky_poll_ratio: f32,
55
- /// Maximum number of concurrent poll activity task requests we will perform at a time on this
56
- /// worker's task queue
57
- #[builder(default = "5")]
58
- pub max_concurrent_at_polls: usize,
59
- /// If set to true this worker will only handle workflow tasks and local activities, it will not
60
- /// poll for activity tasks.
61
- #[builder(default = "false")]
62
- pub no_remote_activities: bool,
63
- /// How long a workflow task is allowed to sit on the sticky queue before it is timed out
64
- /// and moved to the non-sticky queue where it may be picked up by any worker.
65
- #[builder(default = "Duration::from_secs(10)")]
66
- pub sticky_queue_schedule_to_start_timeout: Duration,
67
-
68
- /// Longest interval for throttling activity heartbeats
69
- #[builder(default = "Duration::from_secs(60)")]
70
- pub max_heartbeat_throttle_interval: Duration,
71
-
72
- /// Default interval for throttling activity heartbeats in case
73
- /// `ActivityOptions.heartbeat_timeout` is unset.
74
- /// When the timeout *is* set in the `ActivityOptions`, throttling is set to
75
- /// `heartbeat_timeout * 0.8`.
76
- #[builder(default = "Duration::from_secs(30)")]
77
- pub default_heartbeat_throttle_interval: Duration,
78
-
79
- /// Sets the maximum number of activities per second the task queue will dispatch, controlled
80
- /// server-side. Note that this only takes effect upon an activity poll request. If multiple
81
- /// workers on the same queue have different values set, they will thrash with the last poller
82
- /// winning.
83
- #[builder(default)]
84
- pub max_task_queue_activities_per_second: Option<f64>,
85
-
86
- /// Limits the number of activities per second that this worker will process. The worker will
87
- /// not poll for new activities if by doing so it might receive and execute an activity which
88
- /// would cause it to exceed this limit. Negative, zero, or NaN values will cause building
89
- /// the options to fail.
90
- #[builder(default)]
91
- pub max_worker_activities_per_second: Option<f64>,
92
-
93
- /// # UNDER DEVELOPMENT
94
- /// If set to true this worker will opt-in to the whole-worker versioning feature.
95
- /// `worker_build_id` will be used as the version.
96
- /// todo: link to feature docs
97
- #[builder(default = "false")]
98
- pub use_worker_versioning: bool,
99
-
100
- /// If set false (default), shutdown will not finish until all pending evictions have been
101
- /// issued and replied to. If set true shutdown will be considered complete when the only
102
- /// remaining work is pending evictions.
103
- ///
104
- /// This flag is useful during tests to avoid needing to deal with lots of uninteresting
105
- /// evictions during shutdown. Alternatively, if a lang implementation finds it easy to clean
106
- /// up during shutdown, setting this true saves some back-and-forth.
107
- #[builder(default = "false")]
108
- pub ignore_evicts_on_shutdown: bool,
109
-
110
- /// Maximum number of next page (or initial) history event listing requests we'll make
111
- /// concurrently. I don't this it's worth exposing this to users until we encounter a reason.
112
- #[builder(default = "5")]
113
- pub fetching_concurrency: usize,
114
-
115
- /// If set, and the `save_wf_inputs` feature is enabled in core, will be sent a serialized
116
- /// instance of every input to workflow state in order. This is for testing purposes, SDK
117
- /// implementations never need to care about it.
118
- #[builder(default)]
119
- #[serde(skip)]
120
- pub wf_state_inputs: Option<UnboundedSender<Vec<u8>>>,
121
- }
122
-
123
- impl WorkerConfig {
124
- pub fn max_nonsticky_polls(&self) -> usize {
125
- ((self.max_concurrent_wft_polls as f32 * self.nonsticky_to_sticky_poll_ratio) as usize)
126
- .max(1)
127
- }
128
- pub fn max_sticky_polls(&self) -> usize {
129
- self.max_concurrent_wft_polls
130
- .saturating_sub(self.max_nonsticky_polls())
131
- .max(1)
132
- }
133
- }
134
-
135
- impl WorkerConfigBuilder {
136
- fn validate(&self) -> Result<(), String> {
137
- if self.max_concurrent_wft_polls == Some(0) {
138
- return Err("`max_concurrent_wft_polls` must be at least 1".to_owned());
139
- }
140
- if self.max_concurrent_at_polls == Some(0) {
141
- return Err("`max_concurrent_at_polls` must be at least 1".to_owned());
142
- }
143
- if self.max_cached_workflows > Some(0)
144
- && self.max_outstanding_workflow_tasks > self.max_cached_workflows
145
- {
146
- return Err(
147
- "Maximum concurrent workflow tasks cannot exceed the maximum number of cached \
148
- workflows"
149
- .to_owned(),
150
- );
151
- }
152
- if let Some(Some(ref x)) = self.max_worker_activities_per_second {
153
- if !x.is_normal() || x.is_sign_negative() {
154
- return Err(
155
- "`max_worker_activities_per_second` must be positive and nonzero".to_owned(),
156
- );
157
- }
158
- }
159
- Ok(())
160
- }
161
- }