@temporalio/core-bridge 1.13.2 → 1.14.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 (388) hide show
  1. package/Cargo.lock +135 -100
  2. package/Cargo.toml +3 -2
  3. package/{sdk-core/fsm/rustfsm_trait/LICENSE.txt → LICENSE} +5 -5
  4. package/README.md +0 -1
  5. package/bridge-macros/Cargo.toml +16 -0
  6. package/bridge-macros/src/derive_js_function.rs +126 -0
  7. package/bridge-macros/src/derive_tryfromjs.rs +138 -0
  8. package/bridge-macros/src/derive_tryintojs.rs +151 -0
  9. package/bridge-macros/src/lib.rs +42 -0
  10. package/lib/native.d.ts +13 -6
  11. package/package.json +6 -5
  12. package/releases/aarch64-apple-darwin/index.node +0 -0
  13. package/releases/aarch64-unknown-linux-gnu/index.node +0 -0
  14. package/releases/x86_64-apple-darwin/index.node +0 -0
  15. package/releases/x86_64-pc-windows-msvc/index.node +0 -0
  16. package/releases/x86_64-unknown-linux-gnu/index.node +0 -0
  17. package/sdk-core/.cargo/config.toml +9 -3
  18. package/sdk-core/.github/workflows/per-pr.yml +42 -5
  19. package/sdk-core/AGENTS.md +17 -19
  20. package/sdk-core/Cargo.toml +6 -7
  21. package/sdk-core/README.md +12 -15
  22. package/sdk-core/arch_docs/diagrams/deps.svg +102 -0
  23. package/sdk-core/{client → crates/client}/Cargo.toml +7 -9
  24. package/sdk-core/{client → crates/client}/src/lib.rs +110 -159
  25. package/sdk-core/{client → crates/client}/src/metrics.rs +1 -1
  26. package/sdk-core/{client → crates/client}/src/raw.rs +73 -44
  27. package/sdk-core/crates/client/src/request_extensions.rs +40 -0
  28. package/sdk-core/{client → crates/client}/src/retry.rs +24 -17
  29. package/sdk-core/crates/client/src/worker/mod.rs +1468 -0
  30. package/sdk-core/{client → crates/client}/src/workflow_handle/mod.rs +4 -4
  31. package/sdk-core/{core-api → crates/common}/Cargo.toml +17 -8
  32. package/sdk-core/crates/common/protos/api_cloud_upstream/VERSION +1 -0
  33. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/account/v1/message.proto +18 -0
  34. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/cloudservice/v1/request_response.proto +38 -11
  35. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/cloudservice/v1/service.proto +21 -4
  36. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/operation/v1/message.proto +6 -6
  37. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/sink/v1/message.proto +22 -0
  38. package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/create-release.yml +5 -0
  39. package/sdk-core/{core-api → crates/common}/src/envconfig.rs +2 -2
  40. package/sdk-core/{core-api → crates/common}/src/errors.rs +8 -1
  41. package/sdk-core/{fsm/rustfsm_trait/src/lib.rs → crates/common/src/fsm_trait.rs} +1 -27
  42. package/sdk-core/{core-api → crates/common}/src/lib.rs +24 -9
  43. package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/canned_histories.rs +1 -1
  44. package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/history_builder.rs +1 -1
  45. package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/history_info.rs +2 -2
  46. package/sdk-core/{sdk-core-protos/src/lib.rs → crates/common/src/protos/mod.rs} +18 -17
  47. package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/test_utils.rs +1 -1
  48. package/sdk-core/{core-api → crates/common}/src/telemetry/metrics.rs +447 -50
  49. package/sdk-core/{core-api → crates/common}/src/telemetry.rs +3 -1
  50. package/sdk-core/{core-api → crates/common}/src/worker.rs +112 -18
  51. package/sdk-core/crates/common/tests/worker_task_types_test.rs +129 -0
  52. package/sdk-core/crates/macros/Cargo.toml +23 -0
  53. package/sdk-core/{fsm/rustfsm_procmacro → crates/macros}/src/lib.rs +6 -11
  54. package/sdk-core/{sdk → crates/sdk}/Cargo.toml +10 -10
  55. package/sdk-core/{sdk → crates/sdk}/src/activity_context.rs +8 -6
  56. package/sdk-core/{sdk → crates/sdk}/src/interceptors.rs +1 -1
  57. package/sdk-core/{sdk → crates/sdk}/src/lib.rs +42 -37
  58. package/sdk-core/{sdk → crates/sdk}/src/workflow_context/options.rs +2 -2
  59. package/sdk-core/{sdk → crates/sdk}/src/workflow_context.rs +21 -19
  60. package/sdk-core/{sdk → crates/sdk}/src/workflow_future.rs +1 -1
  61. package/sdk-core/{core → crates/sdk-core}/Cargo.toml +32 -25
  62. package/sdk-core/{tests → crates/sdk-core/benches}/workflow_replay_bench.rs +10 -10
  63. package/sdk-core/crates/sdk-core/machine_coverage/ActivityMachine_Coverage.puml +32 -0
  64. package/sdk-core/crates/sdk-core/machine_coverage/CancelExternalMachine_Coverage.puml +9 -0
  65. package/sdk-core/crates/sdk-core/machine_coverage/CancelWorkflowMachine_Coverage.puml +6 -0
  66. package/sdk-core/crates/sdk-core/machine_coverage/ChildWorkflowMachine_Coverage.puml +27 -0
  67. package/sdk-core/crates/sdk-core/machine_coverage/CompleteWorkflowMachine_Coverage.puml +6 -0
  68. package/sdk-core/crates/sdk-core/machine_coverage/ContinueAsNewWorkflowMachine_Coverage.puml +6 -0
  69. package/sdk-core/crates/sdk-core/machine_coverage/FailWorkflowMachine_Coverage.puml +6 -0
  70. package/sdk-core/crates/sdk-core/machine_coverage/LocalActivityMachine_Coverage.puml +23 -0
  71. package/sdk-core/crates/sdk-core/machine_coverage/ModifyWorkflowPropertiesMachine_Coverage.puml +5 -0
  72. package/sdk-core/crates/sdk-core/machine_coverage/PatchMachine_Coverage.puml +8 -0
  73. package/sdk-core/crates/sdk-core/machine_coverage/SignalExternalMachine_Coverage.puml +12 -0
  74. package/sdk-core/crates/sdk-core/machine_coverage/TimerMachine_Coverage.puml +13 -0
  75. package/sdk-core/crates/sdk-core/machine_coverage/UpdateMachine_Coverage.puml +19 -0
  76. package/sdk-core/crates/sdk-core/machine_coverage/UpsertSearchAttributesMachine_Coverage.puml +5 -0
  77. package/sdk-core/crates/sdk-core/machine_coverage/WorkflowTaskMachine_Coverage.puml +11 -0
  78. package/sdk-core/{core → crates/sdk-core}/src/abstractions.rs +62 -6
  79. package/sdk-core/crates/sdk-core/src/antithesis.rs +60 -0
  80. package/sdk-core/{core → crates/sdk-core}/src/core_tests/activity_tasks.rs +36 -31
  81. package/sdk-core/{core → crates/sdk-core}/src/core_tests/mod.rs +12 -9
  82. package/sdk-core/{core → crates/sdk-core}/src/core_tests/queries.rs +24 -21
  83. package/sdk-core/{core → crates/sdk-core}/src/core_tests/replay_flag.rs +10 -8
  84. package/sdk-core/{core → crates/sdk-core}/src/core_tests/updates.rs +17 -15
  85. package/sdk-core/{core → crates/sdk-core}/src/core_tests/workers.rs +242 -17
  86. package/sdk-core/{core → crates/sdk-core}/src/core_tests/workflow_cancels.rs +1 -1
  87. package/sdk-core/{core → crates/sdk-core}/src/core_tests/workflow_tasks.rs +126 -39
  88. package/sdk-core/{core → crates/sdk-core}/src/debug_client.rs +1 -1
  89. package/sdk-core/{core → crates/sdk-core}/src/ephemeral_server/mod.rs +3 -3
  90. package/sdk-core/crates/sdk-core/src/histfetch.rs +33 -0
  91. package/sdk-core/{core → crates/sdk-core}/src/internal_flags.rs +4 -3
  92. package/sdk-core/{core → crates/sdk-core}/src/lib.rs +85 -43
  93. package/sdk-core/{core → crates/sdk-core}/src/pollers/mod.rs +8 -6
  94. package/sdk-core/{core → crates/sdk-core}/src/pollers/poll_buffer.rs +51 -16
  95. package/sdk-core/{core → crates/sdk-core}/src/protosext/mod.rs +1 -1
  96. package/sdk-core/{core → crates/sdk-core}/src/protosext/protocol_messages.rs +1 -1
  97. package/sdk-core/{core → crates/sdk-core}/src/replay/mod.rs +14 -11
  98. package/sdk-core/{core → crates/sdk-core}/src/retry_logic.rs +19 -1
  99. package/sdk-core/{core → crates/sdk-core}/src/telemetry/log_export.rs +2 -2
  100. package/sdk-core/{core → crates/sdk-core}/src/telemetry/metrics.rs +80 -34
  101. package/sdk-core/{core → crates/sdk-core}/src/telemetry/mod.rs +4 -4
  102. package/sdk-core/{core → crates/sdk-core}/src/telemetry/otel.rs +1 -1
  103. package/sdk-core/{core → crates/sdk-core}/src/telemetry/prometheus_meter.rs +13 -13
  104. package/sdk-core/{core → crates/sdk-core}/src/telemetry/prometheus_server.rs +2 -2
  105. package/sdk-core/{core → crates/sdk-core}/src/test_help/integ_helpers.rs +127 -40
  106. package/sdk-core/{core → crates/sdk-core}/src/test_help/unit_helpers.rs +13 -11
  107. package/sdk-core/{core → crates/sdk-core}/src/worker/activities/activity_heartbeat_manager.rs +2 -2
  108. package/sdk-core/{core → crates/sdk-core}/src/worker/activities/local_activities.rs +14 -12
  109. package/sdk-core/{core → crates/sdk-core}/src/worker/activities.rs +21 -12
  110. package/sdk-core/{core → crates/sdk-core}/src/worker/client/mocks.rs +25 -12
  111. package/sdk-core/{core → crates/sdk-core}/src/worker/client.rs +164 -71
  112. package/sdk-core/crates/sdk-core/src/worker/heartbeat.rs +246 -0
  113. package/sdk-core/crates/sdk-core/src/worker/mod.rs +1462 -0
  114. package/sdk-core/{core → crates/sdk-core}/src/worker/nexus.rs +15 -14
  115. package/sdk-core/{core → crates/sdk-core}/src/worker/slot_provider.rs +12 -13
  116. package/sdk-core/{core → crates/sdk-core}/src/worker/tuner/fixed_size.rs +5 -1
  117. package/sdk-core/{core → crates/sdk-core}/src/worker/tuner/resource_based.rs +453 -57
  118. package/sdk-core/{core → crates/sdk-core}/src/worker/tuner.rs +21 -4
  119. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/driven_workflow.rs +1 -1
  120. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/history_update.rs +2 -2
  121. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/activity_state_machine.rs +147 -37
  122. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/cancel_external_state_machine.rs +8 -9
  123. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/cancel_nexus_op_state_machine.rs +14 -12
  124. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/cancel_workflow_state_machine.rs +6 -7
  125. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/child_workflow_state_machine.rs +31 -37
  126. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/complete_workflow_state_machine.rs +13 -8
  127. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +6 -7
  128. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/fail_workflow_state_machine.rs +6 -7
  129. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/local_activity_state_machine.rs +33 -30
  130. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/mod.rs +22 -17
  131. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +4 -3
  132. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/nexus_operation_state_machine.rs +20 -22
  133. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/patch_state_machine.rs +12 -11
  134. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/signal_external_state_machine.rs +9 -12
  135. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/timer_state_machine.rs +26 -13
  136. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/transition_coverage.rs +1 -2
  137. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/update_state_machine.rs +19 -13
  138. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +20 -18
  139. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/workflow_machines/local_acts.rs +1 -1
  140. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/workflow_machines.rs +61 -70
  141. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/machines/workflow_task_state_machine.rs +13 -15
  142. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/managed_run.rs +55 -37
  143. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/mod.rs +166 -60
  144. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/run_cache.rs +10 -7
  145. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/wft_extraction.rs +4 -2
  146. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/wft_poller.rs +15 -4
  147. package/sdk-core/{core → crates/sdk-core}/src/worker/workflow/workflow_stream.rs +30 -16
  148. package/sdk-core/{tests → crates/sdk-core/tests}/c_bridge_smoke_test.c +1 -1
  149. package/sdk-core/{tests → crates/sdk-core/tests}/cloud_tests.rs +1 -1
  150. package/sdk-core/crates/sdk-core/tests/common/fake_grpc_server.rs +106 -0
  151. package/sdk-core/{tests → crates/sdk-core/tests}/common/http_proxy.rs +1 -1
  152. package/sdk-core/{tests → crates/sdk-core/tests}/common/mod.rs +93 -74
  153. package/sdk-core/{tests → crates/sdk-core/tests}/common/workflows.rs +4 -3
  154. package/sdk-core/crates/sdk-core/tests/fsm_procmacro.rs +6 -0
  155. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/dupe_transitions_fail.rs +1 -3
  156. package/sdk-core/crates/sdk-core/tests/fsm_trybuild/dupe_transitions_fail.stderr +12 -0
  157. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/dynamic_dest_pass.rs +2 -4
  158. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/forgot_name_fail.rs +1 -3
  159. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/forgot_name_fail.stderr +4 -4
  160. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/handler_arg_pass.rs +2 -4
  161. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/handler_pass.rs +2 -4
  162. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/medium_complex_pass.rs +2 -4
  163. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/no_handle_conversions_require_into_fail.rs +2 -4
  164. package/sdk-core/crates/sdk-core/tests/fsm_trybuild/no_handle_conversions_require_into_fail.stderr +15 -0
  165. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/simple_pass.rs +2 -4
  166. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/struct_event_variant_fail.rs +1 -3
  167. package/sdk-core/crates/sdk-core/tests/fsm_trybuild/struct_event_variant_fail.stderr +5 -0
  168. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/tuple_more_item_event_variant_fail.rs +1 -3
  169. package/sdk-core/crates/sdk-core/tests/fsm_trybuild/tuple_more_item_event_variant_fail.stderr +5 -0
  170. package/sdk-core/{fsm/rustfsm_procmacro/tests/trybuild → crates/sdk-core/tests/fsm_trybuild}/tuple_zero_item_event_variant_fail.rs +1 -3
  171. package/sdk-core/crates/sdk-core/tests/fsm_trybuild/tuple_zero_item_event_variant_fail.stderr +5 -0
  172. package/sdk-core/{tests → crates/sdk-core/tests}/global_metric_tests.rs +14 -15
  173. package/sdk-core/{tests → crates/sdk-core/tests/heavy_tests}/fuzzy_workflow.rs +3 -3
  174. package/sdk-core/{tests → crates/sdk-core/tests}/heavy_tests.rs +19 -12
  175. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/activity_functions.rs +1 -1
  176. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/client_tests.rs +16 -111
  177. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/ephemeral_server_tests.rs +5 -6
  178. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/heartbeat_tests.rs +23 -19
  179. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/metrics_tests.rs +134 -60
  180. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/pagination_tests.rs +4 -4
  181. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/polling_tests.rs +37 -36
  182. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/queries_tests.rs +12 -10
  183. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/update_tests.rs +41 -29
  184. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/visibility_tests.rs +24 -19
  185. package/sdk-core/crates/sdk-core/tests/integ_tests/worker_heartbeat_tests.rs +1061 -0
  186. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/worker_tests.rs +113 -51
  187. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/worker_versioning_tests.rs +19 -17
  188. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/activities.rs +35 -30
  189. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/appdata_propagation.rs +3 -3
  190. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/cancel_external.rs +14 -9
  191. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/cancel_wf.rs +13 -8
  192. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/child_workflows.rs +48 -35
  193. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/continue_as_new.rs +14 -9
  194. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/determinism.rs +24 -15
  195. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/eager.rs +9 -4
  196. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/local_activities.rs +47 -47
  197. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/modify_wf_properties.rs +16 -11
  198. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/nexus.rs +51 -23
  199. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/patches.rs +22 -10
  200. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/replay.rs +19 -17
  201. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/resets.rs +14 -5
  202. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/signals.rs +24 -15
  203. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/stickyness.rs +8 -6
  204. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/timers.rs +28 -18
  205. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/upsert_search_attrs.rs +18 -13
  206. package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests.rs +46 -41
  207. package/sdk-core/{tests → crates/sdk-core/tests}/main.rs +15 -9
  208. package/sdk-core/{tests → crates/sdk-core/tests}/manual_tests.rs +20 -14
  209. package/sdk-core/{tests → crates/sdk-core/tests}/runner.rs +2 -2
  210. package/sdk-core/{tests → crates/sdk-core/tests}/shared_tests/mod.rs +10 -5
  211. package/sdk-core/{tests → crates/sdk-core/tests}/shared_tests/priority.rs +5 -5
  212. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/Cargo.toml +13 -10
  213. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/include/temporal-sdk-core-c-bridge.h +32 -23
  214. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/client.rs +55 -32
  215. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/envconfig.rs +1 -1
  216. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/lib.rs +1 -1
  217. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/metric.rs +1 -1
  218. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/runtime.rs +24 -9
  219. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/testing.rs +1 -1
  220. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/tests/context.rs +11 -10
  221. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/tests/mod.rs +7 -7
  222. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/tests/utils.rs +3 -4
  223. package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/worker.rs +111 -58
  224. package/sdk-core/docker-cgroup-tests.sh +24 -0
  225. package/sdk-core/{docker → etc/docker}/docker-compose-ci.yaml +9 -9
  226. package/sdk-core/{docker → etc/docker}/docker-compose-telem.yaml +11 -11
  227. package/sdk-core/{docker → etc/docker}/docker-compose.yaml +8 -8
  228. package/sdk-core/{integ-with-otel.sh → etc/integ-with-otel.sh} +1 -1
  229. package/sdk-core/etc/regen-depgraph.sh +2 -2
  230. package/src/client.rs +24 -33
  231. package/src/helpers/try_from_js.rs +1 -1
  232. package/src/logs.rs +1 -1
  233. package/src/metrics.rs +3 -3
  234. package/src/runtime.rs +42 -28
  235. package/src/testing.rs +3 -3
  236. package/src/worker.rs +70 -36
  237. package/ts/native.ts +13 -6
  238. package/LICENSE.md +0 -23
  239. package/sdk-core/client/src/worker_registry/mod.rs +0 -282
  240. package/sdk-core/core/src/worker/heartbeat.rs +0 -230
  241. package/sdk-core/core/src/worker/mod.rs +0 -990
  242. package/sdk-core/etc/deps.svg +0 -162
  243. package/sdk-core/fsm/Cargo.toml +0 -21
  244. package/sdk-core/fsm/README.md +0 -3
  245. package/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  246. package/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -21
  247. package/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  248. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  249. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -15
  250. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  251. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  252. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  253. package/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  254. package/sdk-core/fsm/src/lib.rs +0 -2
  255. package/sdk-core/sdk-core-protos/Cargo.toml +0 -37
  256. package/sdk-core/sdk-core-protos/protos/api_cloud_upstream/VERSION +0 -1
  257. /package/sdk-core/{client → crates/client}/src/callback_based.rs +0 -0
  258. /package/sdk-core/{client → crates/client}/src/proxy.rs +0 -0
  259. /package/sdk-core/{client → crates/client}/src/replaceable.rs +0 -0
  260. /package/sdk-core/{sdk-core-protos → crates/common}/build.rs +0 -0
  261. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/.github/workflows/build.yaml +0 -0
  262. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/.github/workflows/push-to-buf.yml +0 -0
  263. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/CODEOWNERS +0 -0
  264. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/LICENSE +0 -0
  265. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/Makefile +0 -0
  266. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/README.md +0 -0
  267. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/buf.gen.yaml +0 -0
  268. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/buf.lock +0 -0
  269. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/buf.yaml +0 -0
  270. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/connectivityrule/v1/message.proto +0 -0
  271. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/identity/v1/message.proto +0 -0
  272. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/namespace/v1/message.proto +0 -0
  273. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/nexus/v1/message.proto +0 -0
  274. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/region/v1/message.proto +0 -0
  275. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/resource/v1/message.proto +0 -0
  276. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_cloud_upstream/temporal/api/cloud/usage/v1/message.proto +0 -0
  277. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/CODEOWNERS +0 -0
  278. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  279. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/ci.yml +0 -0
  280. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/publish-docs.yml +0 -0
  281. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/push-to-buf.yml +0 -0
  282. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/trigger-api-go-delete-release.yml +0 -0
  283. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/trigger-api-go-publish-release.yml +0 -0
  284. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/.github/workflows/trigger-api-go-update.yml +0 -0
  285. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/LICENSE +0 -0
  286. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/Makefile +0 -0
  287. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/README.md +0 -0
  288. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/api-linter.yaml +0 -0
  289. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/buf.gen.yaml +0 -0
  290. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/buf.lock +0 -0
  291. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/buf.yaml +0 -0
  292. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/api/annotations.proto +0 -0
  293. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/api/http.proto +0 -0
  294. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/any.proto +0 -0
  295. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/descriptor.proto +0 -0
  296. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/duration.proto +0 -0
  297. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/empty.proto +0 -0
  298. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/struct.proto +0 -0
  299. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/timestamp.proto +0 -0
  300. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/google/protobuf/wrappers.proto +0 -0
  301. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/openapi/openapiv2.json +0 -0
  302. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/openapi/openapiv3.yaml +0 -0
  303. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/openapi/payload_description.txt +0 -0
  304. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/activity/v1/message.proto +0 -0
  305. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -0
  306. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/command/v1/message.proto +0 -0
  307. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/common/v1/message.proto +0 -0
  308. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/deployment/v1/message.proto +0 -0
  309. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -0
  310. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -0
  311. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -0
  312. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/deployment.proto +0 -0
  313. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -0
  314. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -0
  315. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -0
  316. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/nexus.proto +0 -0
  317. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -0
  318. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -0
  319. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -0
  320. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -0
  321. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -0
  322. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -0
  323. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -0
  324. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/export/v1/message.proto +0 -0
  325. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -0
  326. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -0
  327. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/history/v1/message.proto +0 -0
  328. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -0
  329. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/nexus/v1/message.proto +0 -0
  330. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -0
  331. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -0
  332. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -0
  333. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/query/v1/message.proto +0 -0
  334. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -0
  335. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/rules/v1/message.proto +0 -0
  336. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -0
  337. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/enhanced_stack_trace.proto +0 -0
  338. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -0
  339. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/user_metadata.proto +0 -0
  340. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/worker_config.proto +0 -0
  341. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/sdk/v1/workflow_metadata.proto +0 -0
  342. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -0
  343. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/update/v1/message.proto +0 -0
  344. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/version/v1/message.proto +0 -0
  345. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/worker/v1/message.proto +0 -0
  346. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -0
  347. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -0
  348. /package/sdk-core/{sdk-core-protos → crates/common}/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -0
  349. /package/sdk-core/{sdk-core-protos → crates/common}/protos/google/rpc/status.proto +0 -0
  350. /package/sdk-core/{sdk-core-protos → crates/common}/protos/grpc/health/v1/health.proto +0 -0
  351. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -0
  352. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -0
  353. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -0
  354. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/common/common.proto +0 -0
  355. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/core_interface.proto +0 -0
  356. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -0
  357. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/nexus/nexus.proto +0 -0
  358. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -0
  359. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -0
  360. /package/sdk-core/{sdk-core-protos → crates/common}/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -0
  361. /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/Makefile +0 -0
  362. /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/api-linter.yaml +0 -0
  363. /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/buf.yaml +0 -0
  364. /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -0
  365. /package/sdk-core/{sdk-core-protos → crates/common}/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -0
  366. /package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/constants.rs +0 -0
  367. /package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/task_token.rs +0 -0
  368. /package/sdk-core/{sdk-core-protos/src → crates/common/src/protos}/utilities.rs +0 -0
  369. /package/sdk-core/{fsm → crates/macros}/LICENSE.txt +0 -0
  370. /package/sdk-core/{sdk → crates/sdk}/src/app_data.rs +0 -0
  371. /package/sdk-core/{core → crates/sdk-core}/src/abstractions/take_cell.rs +0 -0
  372. /package/sdk-core/{core → crates/sdk-core}/src/test_help/mod.rs +0 -0
  373. /package/sdk-core/{core → crates/sdk-core}/src/worker/slot_supplier.rs +0 -0
  374. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/ends_empty_wft_complete.bin +0 -0
  375. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/evict_while_la_running_no_interference-16_history.bin +0 -0
  376. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/evict_while_la_running_no_interference-23_history.bin +0 -0
  377. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/evict_while_la_running_no_interference-85_history.bin +0 -0
  378. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/fail_wf_task.bin +0 -0
  379. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-0_history.bin +0 -0
  380. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-1_history.bin +0 -0
  381. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-2_history.bin +0 -0
  382. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/long_local_activity_with_update-3_history.bin +0 -0
  383. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/old_change_marker_format.bin +0 -0
  384. /package/sdk-core/{histories → crates/sdk-core/tests/histories}/timer_workflow_history.bin +0 -0
  385. /package/sdk-core/{tests → crates/sdk-core/tests}/integ_tests/workflow_tests/priority.rs +0 -0
  386. /package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/build.rs +0 -0
  387. /package/sdk-core/{core-c-bridge → crates/sdk-core-c-bridge}/src/random.rs +0 -0
  388. /package/sdk-core/{cargo-tokio-console.sh → etc/cargo-tokio-console.sh} +0 -0
@@ -6,6 +6,7 @@ use crate::{
6
6
  client::{PollActivityOptions, PollOptions, PollWorkflowOptions, WorkerClient},
7
7
  },
8
8
  };
9
+ use crossbeam_utils::atomic::AtomicCell;
9
10
  use futures_util::{FutureExt, StreamExt, future::BoxFuture};
10
11
  use governor::{Quota, RateLimiter};
11
12
  use std::{
@@ -16,17 +17,20 @@ use std::{
16
17
  Arc,
17
18
  atomic::{AtomicBool, AtomicUsize, Ordering},
18
19
  },
19
- time::Duration,
20
+ time::{Duration, SystemTime},
20
21
  };
21
- use temporal_client::{ERROR_RETURNED_DUE_TO_SHORT_CIRCUIT, NoRetryOnMatching};
22
- use temporal_sdk_core_api::worker::{
23
- ActivitySlotKind, NexusSlotKind, PollerBehavior, SlotKind, WorkflowSlotKind,
22
+ use temporalio_client::{
23
+ ERROR_RETURNED_DUE_TO_SHORT_CIRCUIT, request_extensions::NoRetryOnMatching,
24
24
  };
25
- use temporal_sdk_core_protos::temporal::api::{
26
- taskqueue::v1::PollerScalingDecision,
27
- workflowservice::v1::{
28
- PollActivityTaskQueueResponse, PollNexusTaskQueueResponse, PollWorkflowTaskQueueResponse,
25
+ use temporalio_common::{
26
+ protos::temporal::api::{
27
+ taskqueue::v1::PollerScalingDecision,
28
+ workflowservice::v1::{
29
+ PollActivityTaskQueueResponse, PollNexusTaskQueueResponse,
30
+ PollWorkflowTaskQueueResponse,
31
+ },
29
32
  },
33
+ worker::{ActivitySlotKind, NexusSlotKind, PollerBehavior, SlotKind, WorkflowSlotKind},
30
34
  };
31
35
  use tokio::{
32
36
  sync::{
@@ -74,9 +78,15 @@ impl LongPollBuffer<PollWorkflowTaskQueueResponse, WorkflowSlotKind> {
74
78
  shutdown: CancellationToken,
75
79
  num_pollers_handler: Option<impl Fn(usize) + Send + Sync + 'static>,
76
80
  options: WorkflowTaskOptions,
81
+ last_successful_poll_time: Arc<AtomicCell<Option<SystemTime>>>,
77
82
  ) -> Self {
78
83
  let is_sticky = sticky_queue.is_some();
79
- let poll_scaler = PollScaler::new(poller_behavior, num_pollers_handler, shutdown.clone());
84
+ let poll_scaler = PollScaler::new(
85
+ poller_behavior,
86
+ num_pollers_handler,
87
+ shutdown.clone(),
88
+ last_successful_poll_time,
89
+ );
80
90
  if let Some(wftps) = options.wft_poller_shared.as_ref() {
81
91
  if is_sticky {
82
92
  wftps.set_sticky_active(poll_scaler.active_rx.clone());
@@ -136,6 +146,7 @@ impl LongPollBuffer<PollWorkflowTaskQueueResponse, WorkflowSlotKind> {
136
146
  }
137
147
 
138
148
  impl LongPollBuffer<PollActivityTaskQueueResponse, ActivitySlotKind> {
149
+ #[allow(clippy::too_many_arguments)]
139
150
  pub(crate) fn new_activity_task(
140
151
  client: Arc<dyn WorkerClient>,
141
152
  task_queue: String,
@@ -144,6 +155,7 @@ impl LongPollBuffer<PollActivityTaskQueueResponse, ActivitySlotKind> {
144
155
  shutdown: CancellationToken,
145
156
  num_pollers_handler: Option<impl Fn(usize) + Send + Sync + 'static>,
146
157
  options: ActivityTaskOptions,
158
+ last_successful_poll_time: Arc<AtomicCell<Option<SystemTime>>>,
147
159
  ) -> Self {
148
160
  let pre_permit_delay = options
149
161
  .max_worker_acts_per_second
@@ -183,7 +195,12 @@ impl LongPollBuffer<PollActivityTaskQueueResponse, ActivitySlotKind> {
183
195
  }
184
196
  };
185
197
 
186
- let poll_scaler = PollScaler::new(poller_behavior, num_pollers_handler, shutdown.clone());
198
+ let poll_scaler = PollScaler::new(
199
+ poller_behavior,
200
+ num_pollers_handler,
201
+ shutdown.clone(),
202
+ last_successful_poll_time,
203
+ );
187
204
  Self::new(
188
205
  poll_fn,
189
206
  permit_dealer,
@@ -196,6 +213,7 @@ impl LongPollBuffer<PollActivityTaskQueueResponse, ActivitySlotKind> {
196
213
  }
197
214
 
198
215
  impl LongPollBuffer<PollNexusTaskQueueResponse, NexusSlotKind> {
216
+ #[allow(clippy::too_many_arguments)]
199
217
  pub(crate) fn new_nexus_task(
200
218
  client: Arc<dyn WorkerClient>,
201
219
  task_queue: String,
@@ -203,6 +221,8 @@ impl LongPollBuffer<PollNexusTaskQueueResponse, NexusSlotKind> {
203
221
  permit_dealer: MeteredPermitDealer<NexusSlotKind>,
204
222
  shutdown: CancellationToken,
205
223
  num_pollers_handler: Option<impl Fn(usize) + Send + Sync + 'static>,
224
+ last_successful_poll_time: Arc<AtomicCell<Option<SystemTime>>>,
225
+ send_heartbeat: bool,
206
226
  ) -> Self {
207
227
  let no_retry = if matches!(poller_behavior, PollerBehavior::Autoscaling { .. }) {
208
228
  Some(NoRetryOnMatching {
@@ -216,11 +236,14 @@ impl LongPollBuffer<PollNexusTaskQueueResponse, NexusSlotKind> {
216
236
  let task_queue = task_queue.clone();
217
237
  async move {
218
238
  client
219
- .poll_nexus_task(PollOptions {
220
- task_queue,
221
- no_retry,
222
- timeout_override,
223
- })
239
+ .poll_nexus_task(
240
+ PollOptions {
241
+ task_queue,
242
+ no_retry,
243
+ timeout_override,
244
+ },
245
+ send_heartbeat,
246
+ )
224
247
  .await
225
248
  }
226
249
  };
@@ -228,7 +251,12 @@ impl LongPollBuffer<PollNexusTaskQueueResponse, NexusSlotKind> {
228
251
  poll_fn,
229
252
  permit_dealer,
230
253
  shutdown.clone(),
231
- PollScaler::new(poller_behavior, num_pollers_handler, shutdown),
254
+ PollScaler::new(
255
+ poller_behavior,
256
+ num_pollers_handler,
257
+ shutdown,
258
+ last_successful_poll_time,
259
+ ),
232
260
  None::<fn() -> BoxFuture<'static, ()>>,
233
261
  None::<fn(&PollNexusTaskQueueResponse)>,
234
262
  )
@@ -413,6 +441,7 @@ where
413
441
  behavior: PollerBehavior,
414
442
  num_pollers_handler: Option<F>,
415
443
  shutdown: CancellationToken,
444
+ last_successful_poll_time: Arc<AtomicCell<Option<SystemTime>>>,
416
445
  ) -> Self {
417
446
  let (active_tx, active_rx) = watch::channel(0);
418
447
  let num_pollers_handler = num_pollers_handler.map(Arc::new);
@@ -433,6 +462,7 @@ where
433
462
  ingested_this_period: Default::default(),
434
463
  ingested_last_period: Default::default(),
435
464
  scale_up_allowed: AtomicBool::new(true),
465
+ last_successful_poll_time,
436
466
  });
437
467
  let rhc = report_handle.clone();
438
468
  let ingestor_task = if behavior.is_autoscaling() {
@@ -495,6 +525,7 @@ struct PollScalerReportHandle {
495
525
  ingested_this_period: AtomicUsize,
496
526
  ingested_last_period: AtomicUsize,
497
527
  scale_up_allowed: AtomicBool,
528
+ last_successful_poll_time: Arc<AtomicCell<Option<SystemTime>>>,
498
529
  }
499
530
 
500
531
  impl PollScalerReportHandle {
@@ -502,6 +533,8 @@ impl PollScalerReportHandle {
502
533
  fn poll_result(&self, res: &Result<impl TaskPollerResult, tonic::Status>) -> bool {
503
534
  match res {
504
535
  Ok(res) => {
536
+ self.last_successful_poll_time
537
+ .store(Some(SystemTime::now()));
505
538
  if let PollerBehavior::SimpleMaximum(_) = self.behavior {
506
539
  // We don't do auto-scaling with the simple max
507
540
  return true;
@@ -735,6 +768,7 @@ mod tests {
735
768
  WorkflowTaskOptions {
736
769
  wft_poller_shared: Some(Arc::new(WFTPollerShared::new(Some(10)))),
737
770
  },
771
+ Arc::new(AtomicCell::new(None)),
738
772
  );
739
773
 
740
774
  // Poll a bunch of times, "interrupting" it each time, we should only actually have polled
@@ -790,6 +824,7 @@ mod tests {
790
824
  WorkflowTaskOptions {
791
825
  wft_poller_shared: Some(Arc::new(WFTPollerShared::new(Some(1)))),
792
826
  },
827
+ Arc::new(AtomicCell::new(None)),
793
828
  );
794
829
 
795
830
  // Should not see error, unwraps should get empty response
@@ -14,7 +14,7 @@ use std::{
14
14
  fmt::{Debug, Display, Formatter},
15
15
  time::{Duration, SystemTime},
16
16
  };
17
- use temporal_sdk_core_protos::{
17
+ use temporalio_common::protos::{
18
18
  constants::{LOCAL_ACTIVITY_MARKER_NAME, PATCH_MARKER_NAME},
19
19
  coresdk::{
20
20
  activity_result::{activity_execution_result, activity_execution_result::Status},
@@ -1,6 +1,6 @@
1
1
  use anyhow::anyhow;
2
2
  use std::collections::HashMap;
3
- use temporal_sdk_core_protos::temporal::api::{
3
+ use temporalio_common::protos::temporal::api::{
4
4
  common::v1::Payload,
5
5
  history::v1::{HistoryEvent, history_event},
6
6
  protocol::v1::{Message, message::SequencingId},
@@ -16,19 +16,21 @@ use std::{
16
16
  sync::{Arc, OnceLock},
17
17
  task::{Context, Poll},
18
18
  };
19
- use temporal_sdk_core_api::worker::{PollerBehavior, WorkerConfig};
20
- pub use temporal_sdk_core_protos::{
19
+ pub use temporalio_common::protos::{
21
20
  DEFAULT_WORKFLOW_TYPE, HistoryInfo, TestHistoryBuilder, default_wes_attribs,
22
21
  };
23
- use temporal_sdk_core_protos::{
24
- coresdk::workflow_activation::remove_from_cache::EvictionReason,
25
- temporal::api::{
26
- common::v1::WorkflowExecution,
27
- history::v1::History,
28
- workflowservice::v1::{
29
- RespondWorkflowTaskCompletedResponse, RespondWorkflowTaskFailedResponse,
22
+ use temporalio_common::{
23
+ protos::{
24
+ coresdk::workflow_activation::remove_from_cache::EvictionReason,
25
+ temporal::api::{
26
+ common::v1::WorkflowExecution,
27
+ history::v1::History,
28
+ workflowservice::v1::{
29
+ RespondWorkflowTaskCompletedResponse, RespondWorkflowTaskFailedResponse,
30
+ },
30
31
  },
31
32
  },
33
+ worker::{PollerBehavior, WorkerConfig, WorkerTaskTypes},
32
34
  };
33
35
  use tokio::sync::{Mutex as TokioMutex, mpsc, mpsc::UnboundedSender};
34
36
  use tokio_stream::wrappers::UnboundedReceiverStream;
@@ -60,7 +62,8 @@ where
60
62
  pub(crate) fn into_core_worker(mut self) -> Result<Worker, anyhow::Error> {
61
63
  self.config.max_cached_workflows = 1;
62
64
  self.config.workflow_task_poller_behavior = PollerBehavior::SimpleMaximum(1);
63
- self.config.no_remote_activities = true;
65
+ self.config.task_types = WorkerTaskTypes::workflow_only();
66
+ self.config.skip_client_worker_set_check = true;
64
67
  let historator = Historator::new(self.history_stream);
65
68
  let post_activate = historator.get_post_activate_hook();
66
69
  let shutdown_tok = historator.get_shutdown_setter();
@@ -114,7 +117,7 @@ where
114
117
  hist_allow_tx.send("Failed".to_string()).unwrap();
115
118
  async move { Ok(RespondWorkflowTaskFailedResponse::default()) }.boxed()
116
119
  });
117
- let mut worker = Worker::new(self.config, None, Arc::new(client), None, None);
120
+ let mut worker = Worker::new(self.config, None, Arc::new(client), None, None)?;
118
121
  worker.set_post_activate_hook(post_activate);
119
122
  shutdown_tok(worker.shutdown_token());
120
123
  Ok(worker)
@@ -1,5 +1,5 @@
1
1
  use std::{num::NonZero, time::Duration};
2
- use temporal_sdk_core_protos::temporal::api::{
2
+ use temporalio_common::protos::temporal::api::{
3
3
  common::v1::RetryPolicy, failure::v1::ApplicationFailureInfo,
4
4
  };
5
5
 
@@ -71,6 +71,15 @@ impl ValidatedRetryPolicy {
71
71
  application_failure: Option<&ApplicationFailureInfo>,
72
72
  ) -> Option<Duration> {
73
73
  if self.maximum_attempts > 0 && attempt_number.get() >= self.maximum_attempts {
74
+ #[cfg(feature = "antithesis_assertions")]
75
+ crate::antithesis::assert_sometimes!(
76
+ true,
77
+ "Retry maximum_attempts limit reached",
78
+ ::serde_json::json!({
79
+ "attempt": attempt_number.get(),
80
+ "maximum_attempts": self.maximum_attempts
81
+ })
82
+ );
74
83
  return None;
75
84
  }
76
85
 
@@ -78,6 +87,15 @@ impl ValidatedRetryPolicy {
78
87
  .map(|f| f.non_retryable)
79
88
  .unwrap_or_default();
80
89
  if non_retryable {
90
+ #[cfg(feature = "antithesis_assertions")]
91
+ crate::antithesis::assert_sometimes!(
92
+ true,
93
+ "Non-retryable application failure encountered",
94
+ ::serde_json::json!({
95
+ "attempt": attempt_number.get(),
96
+ "error_type": application_failure.map(|f| &f.r#type)
97
+ })
98
+ );
81
99
  return None;
82
100
  }
83
101
 
@@ -2,7 +2,7 @@ use futures_channel::mpsc::{Receiver, Sender, channel};
2
2
  use parking_lot::Mutex;
3
3
  use ringbuf::{HeapRb, consumer::Consumer, producer::Producer, traits::Split};
4
4
  use std::{collections::HashMap, fmt, sync::Arc, time::SystemTime};
5
- use temporal_sdk_core_api::telemetry::{CoreLog, CoreLogConsumer};
5
+ use temporalio_common::telemetry::{CoreLog, CoreLogConsumer};
6
6
  use tracing_subscriber::Layer;
7
7
 
8
8
  #[derive(Debug)]
@@ -224,7 +224,7 @@ mod tests {
224
224
  fmt,
225
225
  sync::{Arc, Mutex},
226
226
  };
227
- use temporal_sdk_core_api::telemetry::{
227
+ use temporalio_common::telemetry::{
228
228
  CoreLog, CoreLogConsumer, CoreTelemetry, Logger, TelemetryOptionsBuilder,
229
229
  };
230
230
  use tracing::Level;
@@ -1,4 +1,6 @@
1
- use crate::{abstractions::dbg_panic, telemetry::TelemetryInstance};
1
+ #[cfg(test)]
2
+ use crate::TelemetryInstance;
3
+ use crate::abstractions::dbg_panic;
2
4
 
3
5
  use std::{
4
6
  fmt::{Debug, Display},
@@ -6,15 +8,15 @@ use std::{
6
8
  sync::Arc,
7
9
  time::Duration,
8
10
  };
9
- use temporal_sdk_core_api::telemetry::metrics::{
10
- BufferAttributes, BufferInstrumentRef, CoreMeter, Counter, CounterBase, Gauge, GaugeBase,
11
- GaugeF64, GaugeF64Base, Histogram, HistogramBase, HistogramDuration, HistogramDurationBase,
12
- HistogramF64, HistogramF64Base, LazyBufferInstrument, MetricAttributable, MetricAttributes,
13
- MetricCallBufferer, MetricEvent, MetricKeyValue, MetricKind, MetricParameters, MetricUpdateVal,
14
- NewAttributes, NoOpCoreMeter,
15
- };
16
- use temporal_sdk_core_protos::temporal::api::{
17
- enums::v1::WorkflowTaskFailedCause, failure::v1::Failure,
11
+ use temporalio_common::{
12
+ protos::temporal::api::{enums::v1::WorkflowTaskFailedCause, failure::v1::Failure},
13
+ telemetry::metrics::{
14
+ BufferAttributes, BufferInstrumentRef, CoreMeter, Counter, CounterBase, Gauge, GaugeBase,
15
+ GaugeF64, GaugeF64Base, Histogram, HistogramBase, HistogramDuration, HistogramDurationBase,
16
+ HistogramF64, HistogramF64Base, LazyBufferInstrument, MetricAttributable, MetricAttributes,
17
+ MetricCallBufferer, MetricEvent, MetricKeyValue, MetricKind, MetricParameters,
18
+ MetricUpdateVal, NewAttributes, NoOpCoreMeter, TemporalMeter, WorkerHeartbeatMetrics,
19
+ },
18
20
  };
19
21
 
20
22
  /// Used to track context associated with metrics, and record/update them
@@ -23,6 +25,7 @@ pub(crate) struct MetricsContext {
23
25
  meter: Arc<dyn CoreMeter>,
24
26
  kvs: MetricAttributes,
25
27
  instruments: Arc<Instruments>,
28
+ in_memory_metrics: Option<Arc<WorkerHeartbeatMetrics>>,
26
29
  }
27
30
 
28
31
  #[derive(Clone)]
@@ -68,28 +71,41 @@ impl MetricsContext {
68
71
  pub(crate) fn no_op() -> Self {
69
72
  let meter = Arc::new(NoOpCoreMeter);
70
73
  let kvs = meter.new_attributes(Default::default());
71
- let instruments = Arc::new(Instruments::new(meter.as_ref()));
74
+ let in_memory_metrics = Some(Arc::new(WorkerHeartbeatMetrics::default()));
75
+ let instruments = Arc::new(Instruments::new(meter.as_ref(), in_memory_metrics.clone()));
72
76
  Self {
73
77
  kvs,
74
78
  instruments,
75
79
  meter,
80
+ in_memory_metrics,
76
81
  }
77
82
  }
78
83
 
84
+ #[cfg(test)]
79
85
  pub(crate) fn top_level(namespace: String, tq: String, telemetry: &TelemetryInstance) -> Self {
80
- if let Some(mut meter) = telemetry.get_temporal_metric_meter() {
86
+ MetricsContext::top_level_with_meter(namespace, tq, telemetry.get_temporal_metric_meter())
87
+ }
88
+
89
+ pub(crate) fn top_level_with_meter(
90
+ namespace: String,
91
+ tq: String,
92
+ temporal_meter: Option<TemporalMeter>,
93
+ ) -> Self {
94
+ if let Some(mut meter) = temporal_meter {
81
95
  meter
82
96
  .default_attribs
83
97
  .attributes
84
98
  .push(MetricKeyValue::new(KEY_NAMESPACE, namespace));
85
99
  meter.default_attribs.attributes.push(task_queue(tq));
86
100
  let kvs = meter.inner.new_attributes(meter.default_attribs);
87
- let mut instruments = Instruments::new(meter.inner.as_ref());
101
+ let in_memory_metrics = Some(Arc::new(WorkerHeartbeatMetrics::default()));
102
+ let mut instruments = Instruments::new(meter.inner.as_ref(), in_memory_metrics.clone());
88
103
  instruments.update_attributes(&kvs);
89
104
  Self {
90
105
  kvs,
91
106
  instruments: Arc::new(instruments),
92
107
  meter: meter.inner,
108
+ in_memory_metrics,
93
109
  }
94
110
  } else {
95
111
  Self::no_op()
@@ -110,9 +126,14 @@ impl MetricsContext {
110
126
  instruments: Arc::new(instruments),
111
127
  kvs,
112
128
  meter: self.meter.clone(),
129
+ in_memory_metrics: self.in_memory_metrics.clone(),
113
130
  }
114
131
  }
115
132
 
133
+ pub(crate) fn in_memory_meter(&self) -> Option<Arc<WorkerHeartbeatMetrics>> {
134
+ self.in_memory_metrics.clone()
135
+ }
136
+
116
137
  /// A workflow task queue poll succeeded
117
138
  pub(crate) fn wf_tq_poll_ok(&self) {
118
139
  self.instruments.wf_task_queue_poll_succeed_counter.adds(1);
@@ -288,7 +309,31 @@ impl MetricsContext {
288
309
  }
289
310
 
290
311
  impl Instruments {
291
- fn new(meter: &dyn CoreMeter) -> Self {
312
+ fn new(meter: &dyn CoreMeter, in_memory: Option<Arc<WorkerHeartbeatMetrics>>) -> Self {
313
+ let counter_with_in_mem = |params: MetricParameters| -> Counter {
314
+ in_memory
315
+ .clone()
316
+ .and_then(|in_mem| in_mem.get_metric(&params.name))
317
+ .map(|metric| meter.counter_with_in_memory(params.clone(), metric))
318
+ .unwrap_or_else(|| meter.counter(params))
319
+ };
320
+
321
+ let gauge_with_in_mem = |params: MetricParameters| -> Gauge {
322
+ in_memory
323
+ .clone()
324
+ .and_then(|in_mem| in_mem.get_metric(&params.name))
325
+ .map(|metric| meter.gauge_with_in_memory(params.clone(), metric))
326
+ .unwrap_or_else(|| meter.gauge(params))
327
+ };
328
+
329
+ let histogram_with_in_mem = |params: MetricParameters| -> HistogramDuration {
330
+ in_memory
331
+ .clone()
332
+ .and_then(|in_mem| in_mem.get_metric(&params.name))
333
+ .map(|metric| meter.histogram_duration_with_in_memory(params.clone(), metric))
334
+ .unwrap_or_else(|| meter.histogram_duration(params))
335
+ };
336
+
292
337
  Self {
293
338
  wf_completed_counter: meter.counter(MetricParameters {
294
339
  name: "workflow_completed".into(),
@@ -320,12 +365,12 @@ impl Instruments {
320
365
  description: "Count of workflow task queue poll timeouts (no new task)".into(),
321
366
  unit: "".into(),
322
367
  }),
323
- wf_task_queue_poll_succeed_counter: meter.counter(MetricParameters {
368
+ wf_task_queue_poll_succeed_counter: counter_with_in_mem(MetricParameters {
324
369
  name: "workflow_task_queue_poll_succeed".into(),
325
370
  description: "Count of workflow task queue poll successes".into(),
326
371
  unit: "".into(),
327
372
  }),
328
- wf_task_execution_failure_counter: meter.counter(MetricParameters {
373
+ wf_task_execution_failure_counter: counter_with_in_mem(MetricParameters {
329
374
  name: "workflow_task_execution_failed".into(),
330
375
  description: "Count of workflow task execution failures".into(),
331
376
  unit: "".into(),
@@ -340,7 +385,7 @@ impl Instruments {
340
385
  unit: "duration".into(),
341
386
  description: "Histogram of workflow task replay latencies".into(),
342
387
  }),
343
- wf_task_execution_latency: meter.histogram_duration(MetricParameters {
388
+ wf_task_execution_latency: histogram_with_in_mem(MetricParameters {
344
389
  name: WORKFLOW_TASK_EXECUTION_LATENCY_HISTOGRAM_NAME.into(),
345
390
  unit: "duration".into(),
346
391
  description: "Histogram of workflow task execution (not replay) latencies".into(),
@@ -350,12 +395,12 @@ impl Instruments {
350
395
  description: "Count of activity task queue poll timeouts (no new task)".into(),
351
396
  unit: "".into(),
352
397
  }),
353
- act_task_received_counter: meter.counter(MetricParameters {
398
+ act_task_received_counter: counter_with_in_mem(MetricParameters {
354
399
  name: "activity_task_received".into(),
355
400
  description: "Count of activity task queue poll successes".into(),
356
401
  unit: "".into(),
357
402
  }),
358
- act_execution_failed: meter.counter(MetricParameters {
403
+ act_execution_failed: counter_with_in_mem(MetricParameters {
359
404
  name: "activity_execution_failed".into(),
360
405
  description: "Count of activity task execution failures".into(),
361
406
  unit: "".into(),
@@ -365,7 +410,7 @@ impl Instruments {
365
410
  unit: "duration".into(),
366
411
  description: "Histogram of activity schedule-to-start latencies".into(),
367
412
  }),
368
- act_exec_latency: meter.histogram_duration(MetricParameters {
413
+ act_exec_latency: histogram_with_in_mem(MetricParameters {
369
414
  name: ACTIVITY_EXEC_LATENCY_HISTOGRAM_NAME.into(),
370
415
  unit: "duration".into(),
371
416
  description: "Histogram of activity execution latencies".into(),
@@ -386,7 +431,7 @@ impl Instruments {
386
431
  description: "Count of local activity executions that failed".into(),
387
432
  unit: "".into(),
388
433
  }),
389
- la_exec_latency: meter.histogram_duration(MetricParameters {
434
+ la_exec_latency: histogram_with_in_mem(MetricParameters {
390
435
  name: "local_activity_execution_latency".into(),
391
436
  unit: "duration".into(),
392
437
  description: "Histogram of local activity execution latencies".into(),
@@ -398,7 +443,7 @@ impl Instruments {
398
443
  "Histogram of local activity execution latencies for successful local activities"
399
444
  .into(),
400
445
  }),
401
- la_total: meter.counter(MetricParameters {
446
+ la_total: counter_with_in_mem(MetricParameters {
402
447
  name: "local_activity_total".into(),
403
448
  description: "Count of local activities executed".into(),
404
449
  unit: "".into(),
@@ -418,12 +463,12 @@ impl Instruments {
418
463
  unit: "duration".into(),
419
464
  description: "Histogram of nexus task end-to-end latencies".into(),
420
465
  }),
421
- nexus_task_execution_latency: meter.histogram_duration(MetricParameters {
466
+ nexus_task_execution_latency: histogram_with_in_mem(MetricParameters {
422
467
  name: "nexus_task_execution_latency".into(),
423
468
  unit: "duration".into(),
424
469
  description: "Histogram of nexus task execution latencies".into(),
425
470
  }),
426
- nexus_task_execution_failed: meter.counter(MetricParameters {
471
+ nexus_task_execution_failed: counter_with_in_mem(MetricParameters {
427
472
  name: "nexus_task_execution_failed".into(),
428
473
  description: "Count of nexus task execution failures".into(),
429
474
  unit: "".into(),
@@ -434,35 +479,34 @@ impl Instruments {
434
479
  description: "Count of the number of initialized workers".into(),
435
480
  unit: "".into(),
436
481
  }),
437
- num_pollers: meter.gauge(MetricParameters {
482
+ num_pollers: gauge_with_in_mem(MetricParameters {
438
483
  name: NUM_POLLERS_NAME.into(),
439
484
  description: "Current number of active pollers per queue type".into(),
440
485
  unit: "".into(),
441
486
  }),
442
- task_slots_available: meter.gauge(MetricParameters {
487
+ task_slots_available: gauge_with_in_mem(MetricParameters {
443
488
  name: TASK_SLOTS_AVAILABLE_NAME.into(),
444
489
  description: "Current number of available slots per task type".into(),
445
490
  unit: "".into(),
446
491
  }),
447
- task_slots_used: meter.gauge(MetricParameters {
492
+ task_slots_used: gauge_with_in_mem(MetricParameters {
448
493
  name: TASK_SLOTS_USED_NAME.into(),
449
494
  description: "Current number of used slots per task type".into(),
450
495
  unit: "".into(),
451
496
  }),
452
- sticky_cache_hit: meter.counter(MetricParameters {
497
+ sticky_cache_hit: counter_with_in_mem(MetricParameters {
453
498
  name: "sticky_cache_hit".into(),
454
499
  description: "Count of times the workflow cache was used for a new workflow task"
455
500
  .into(),
456
501
  unit: "".into(),
457
502
  }),
458
- sticky_cache_miss: meter.counter(MetricParameters {
503
+ sticky_cache_miss: counter_with_in_mem(MetricParameters {
459
504
  name: "sticky_cache_miss".into(),
460
505
  description:
461
- "Count of times the workflow cache was missing a workflow for a sticky task"
462
- .into(),
506
+ "Count of times the workflow cache was missing a workflow for a sticky task".into(),
463
507
  unit: "".into(),
464
508
  }),
465
- sticky_cache_size: meter.gauge(MetricParameters {
509
+ sticky_cache_size: gauge_with_in_mem(MetricParameters {
466
510
  name: STICKY_CACHE_SIZE_NAME.into(),
467
511
  description: "Current number of cached workflows".into(),
468
512
  unit: "".into(),
@@ -598,6 +642,7 @@ pub(crate) enum FailureReason {
598
642
  Timeout,
599
643
  NexusOperation(String),
600
644
  NexusHandlerError(String),
645
+ GrpcMessageTooLarge,
601
646
  }
602
647
  impl Display for FailureReason {
603
648
  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
@@ -607,6 +652,7 @@ impl Display for FailureReason {
607
652
  FailureReason::Timeout => "timeout".to_owned(),
608
653
  FailureReason::NexusOperation(op) => format!("operation_{op}"),
609
654
  FailureReason::NexusHandlerError(op) => format!("handler_error_{op}"),
655
+ FailureReason::GrpcMessageTooLarge => "GrpcMessageTooLarge".to_owned(),
610
656
  };
611
657
  write!(f, "{str}")
612
658
  }
@@ -1065,7 +1111,7 @@ impl<CM: CoreMeter> CoreMeter for PrefixedMetricsMeter<CM> {
1065
1111
  mod tests {
1066
1112
  use super::*;
1067
1113
  use std::any::Any;
1068
- use temporal_sdk_core_api::telemetry::{
1114
+ use temporalio_common::telemetry::{
1069
1115
  METRIC_PREFIX,
1070
1116
  metrics::{BufferInstrumentRef, CustomMetricAttributes},
1071
1117
  };
@@ -1104,7 +1150,7 @@ mod tests {
1104
1150
  METRIC_PREFIX.to_string(),
1105
1151
  Some(call_buffer.clone()),
1106
1152
  true,
1107
- temporal_sdk_core_api::telemetry::TaskQueueLabelStrategy::UseNormal,
1153
+ temporalio_common::telemetry::TaskQueueLabelStrategy::UseNormal,
1108
1154
  );
1109
1155
  let mc = MetricsContext::top_level("foo".to_string(), "q".to_string(), &telem_instance);
1110
1156
  mc.forced_cache_eviction();
@@ -39,7 +39,7 @@ use std::{
39
39
  atomic::{AtomicBool, Ordering},
40
40
  },
41
41
  };
42
- use temporal_sdk_core_api::telemetry::{
42
+ use temporalio_common::telemetry::{
43
43
  CoreLog, CoreTelemetry, Logger, TaskQueueLabelStrategy, TelemetryOptions,
44
44
  TelemetryOptionsBuilder,
45
45
  metrics::{CoreMeter, MetricKeyValue, NewAttributes, TemporalMeter},
@@ -55,7 +55,7 @@ const FORWARD_LOG_BUFFER_SIZE: usize = 2048;
55
55
  /// traces at `core_level` and all others (from 3rd party modules, etc) at `other_level`.
56
56
  pub fn construct_filter_string(core_level: Level, other_level: Level) -> String {
57
57
  format!(
58
- "{other_level},temporal_sdk_core={core_level},temporal_client={core_level},temporal_sdk={core_level}"
58
+ "{other_level},temporalio_sdk_core={core_level},temporalio_client={core_level},temporalio_sdk={core_level}"
59
59
  )
60
60
  }
61
61
 
@@ -249,7 +249,7 @@ pub fn telemetry_init(opts: TelemetryOptions) -> Result<TelemetryInstance, anyho
249
249
  ))
250
250
  }
251
251
 
252
- /// WARNING: Calling can cause panics because of https://github.com/tokio-rs/tracing/issues/1656
252
+ /// WARNING: Calling can cause panics because of <https://github.com/tokio-rs/tracing/issues/1656>
253
253
  /// Lang must not start using until resolved
254
254
  ///
255
255
  /// Initialize telemetry/tracing globally. Useful for testing. Only takes affect when called
@@ -268,7 +268,7 @@ pub fn telemetry_init_global(opts: TelemetryOptions) -> Result<(), anyhow::Error
268
268
  Ok(())
269
269
  }
270
270
 
271
- /// WARNING: Calling can cause panics because of https://github.com/tokio-rs/tracing/issues/1656
271
+ /// WARNING: Calling can cause panics because of <https://github.com/tokio-rs/tracing/issues/1656>
272
272
  /// Lang must not start using until resolved
273
273
  ///
274
274
  /// Initialize the fallback global handler. All lang SDKs should call this somewhere, once, at
@@ -22,7 +22,7 @@ use opentelemetry_sdk::{
22
22
  },
23
23
  };
24
24
  use std::{collections::HashMap, sync::Arc, time::Duration};
25
- use temporal_sdk_core_api::telemetry::{
25
+ use temporalio_common::telemetry::{
26
26
  HistogramBucketOverrides, MetricTemporality, OtelCollectorOptions, OtlpProtocol,
27
27
  metrics::{
28
28
  CoreMeter, Counter, Gauge, GaugeF64, Histogram, HistogramBase, HistogramDuration,