@temporalio/core-bridge 1.15.0 → 1.16.1

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 (209) hide show
  1. package/Cargo.lock +172 -70
  2. package/lib/native.d.ts +1 -1
  3. package/package.json +2 -2
  4. package/releases/aarch64-apple-darwin/index.node +0 -0
  5. package/releases/aarch64-unknown-linux-gnu/index.node +0 -0
  6. package/releases/x86_64-apple-darwin/index.node +0 -0
  7. package/releases/x86_64-pc-windows-msvc/index.node +0 -0
  8. package/releases/x86_64-unknown-linux-gnu/index.node +0 -0
  9. package/sdk-core/.github/workflows/per-pr.yml +6 -6
  10. package/sdk-core/AGENTS.md +41 -30
  11. package/sdk-core/Cargo.toml +3 -0
  12. package/sdk-core/README.md +15 -9
  13. package/sdk-core/crates/client/Cargo.toml +4 -0
  14. package/sdk-core/crates/client/README.md +139 -0
  15. package/sdk-core/crates/client/src/async_activity_handle.rs +297 -0
  16. package/sdk-core/crates/client/src/callback_based.rs +7 -0
  17. package/sdk-core/crates/client/src/errors.rs +294 -0
  18. package/sdk-core/crates/client/src/{raw.rs → grpc.rs} +280 -159
  19. package/sdk-core/crates/client/src/lib.rs +920 -1326
  20. package/sdk-core/crates/client/src/metrics.rs +24 -33
  21. package/sdk-core/crates/client/src/options_structs.rs +457 -0
  22. package/sdk-core/crates/client/src/replaceable.rs +5 -4
  23. package/sdk-core/crates/client/src/request_extensions.rs +8 -9
  24. package/sdk-core/crates/client/src/retry.rs +99 -54
  25. package/sdk-core/crates/client/src/{worker/mod.rs → worker.rs} +1 -1
  26. package/sdk-core/crates/client/src/workflow_handle.rs +826 -0
  27. package/sdk-core/crates/common/Cargo.toml +61 -2
  28. package/sdk-core/crates/common/build.rs +742 -12
  29. package/sdk-core/crates/common/protos/api_upstream/.github/workflows/ci.yml +2 -0
  30. package/sdk-core/crates/common/protos/api_upstream/Makefile +2 -1
  31. package/sdk-core/crates/common/protos/api_upstream/buf.yaml +0 -3
  32. package/sdk-core/crates/common/protos/api_upstream/cmd/check-path-conflicts/main.go +137 -0
  33. package/sdk-core/crates/common/protos/api_upstream/openapi/openapiv2.json +1166 -770
  34. package/sdk-core/crates/common/protos/api_upstream/openapi/openapiv3.yaml +1243 -750
  35. package/sdk-core/crates/common/protos/api_upstream/temporal/api/deployment/v1/message.proto +2 -2
  36. package/sdk-core/crates/common/protos/api_upstream/temporal/api/enums/v1/workflow.proto +4 -3
  37. package/sdk-core/crates/common/protos/api_upstream/temporal/api/failure/v1/message.proto +1 -0
  38. package/sdk-core/crates/common/protos/api_upstream/temporal/api/history/v1/message.proto +4 -0
  39. package/sdk-core/crates/common/protos/api_upstream/temporal/api/namespace/v1/message.proto +6 -0
  40. package/sdk-core/crates/common/protos/api_upstream/temporal/api/nexus/v1/message.proto +16 -1
  41. package/sdk-core/crates/common/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +64 -6
  42. package/sdk-core/crates/common/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +88 -33
  43. package/sdk-core/crates/common/protos/local/temporal/sdk/core/nexus/nexus.proto +4 -2
  44. package/sdk-core/crates/common/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +4 -0
  45. package/sdk-core/crates/common/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +5 -5
  46. package/sdk-core/crates/common/src/activity_definition.rs +20 -0
  47. package/sdk-core/crates/common/src/data_converters.rs +770 -0
  48. package/sdk-core/crates/common/src/envconfig.rs +5 -0
  49. package/sdk-core/crates/common/src/lib.rs +15 -211
  50. package/sdk-core/crates/common/src/payload_visitor.rs +648 -0
  51. package/sdk-core/crates/common/src/priority.rs +110 -0
  52. package/sdk-core/crates/common/src/protos/canned_histories.rs +3 -0
  53. package/sdk-core/crates/common/src/protos/history_builder.rs +45 -0
  54. package/sdk-core/crates/common/src/protos/history_info.rs +2 -0
  55. package/sdk-core/crates/common/src/protos/mod.rs +122 -27
  56. package/sdk-core/crates/common/src/protos/task_token.rs +3 -3
  57. package/sdk-core/crates/common/src/protos/utilities.rs +11 -0
  58. package/sdk-core/crates/{sdk-core → common}/src/telemetry/log_export.rs +5 -7
  59. package/sdk-core/crates/common/src/telemetry/metrics/core.rs +125 -0
  60. package/sdk-core/crates/common/src/telemetry/metrics.rs +268 -223
  61. package/sdk-core/crates/{sdk-core → common}/src/telemetry/otel.rs +8 -13
  62. package/sdk-core/crates/{sdk-core → common}/src/telemetry/prometheus_meter.rs +49 -50
  63. package/sdk-core/crates/{sdk-core → common}/src/telemetry/prometheus_server.rs +2 -3
  64. package/sdk-core/crates/common/src/telemetry.rs +264 -4
  65. package/sdk-core/crates/common/src/worker.rs +68 -603
  66. package/sdk-core/crates/common/src/workflow_definition.rs +60 -0
  67. package/sdk-core/crates/macros/Cargo.toml +5 -1
  68. package/sdk-core/crates/macros/src/activities_definitions.rs +585 -0
  69. package/sdk-core/crates/macros/src/fsm_impl.rs +507 -0
  70. package/sdk-core/crates/macros/src/lib.rs +138 -512
  71. package/sdk-core/crates/macros/src/macro_utils.rs +106 -0
  72. package/sdk-core/crates/macros/src/workflow_definitions.rs +1224 -0
  73. package/sdk-core/crates/sdk/Cargo.toml +19 -6
  74. package/sdk-core/crates/sdk/README.md +415 -0
  75. package/sdk-core/crates/sdk/src/activities.rs +417 -0
  76. package/sdk-core/crates/sdk/src/interceptors.rs +1 -1
  77. package/sdk-core/crates/sdk/src/lib.rs +757 -442
  78. package/sdk-core/crates/sdk/src/workflow_context/options.rs +45 -35
  79. package/sdk-core/crates/sdk/src/workflow_context.rs +1033 -289
  80. package/sdk-core/crates/sdk/src/workflow_future.rs +277 -213
  81. package/sdk-core/crates/sdk/src/workflows.rs +711 -0
  82. package/sdk-core/crates/sdk-core/Cargo.toml +57 -64
  83. package/sdk-core/crates/sdk-core/benches/workflow_replay_bench.rs +41 -35
  84. package/sdk-core/crates/sdk-core/machine_coverage/ActivityMachine_Coverage.puml +1 -1
  85. package/sdk-core/crates/sdk-core/src/abstractions.rs +6 -10
  86. package/sdk-core/crates/sdk-core/src/core_tests/activity_tasks.rs +6 -5
  87. package/sdk-core/crates/sdk-core/src/core_tests/mod.rs +13 -15
  88. package/sdk-core/crates/sdk-core/src/core_tests/queries.rs +21 -25
  89. package/sdk-core/crates/sdk-core/src/core_tests/replay_flag.rs +7 -10
  90. package/sdk-core/crates/sdk-core/src/core_tests/updates.rs +14 -17
  91. package/sdk-core/crates/sdk-core/src/core_tests/workers.rs +493 -26
  92. package/sdk-core/crates/sdk-core/src/core_tests/workflow_tasks.rs +4 -8
  93. package/sdk-core/crates/sdk-core/src/ephemeral_server/mod.rs +7 -7
  94. package/sdk-core/crates/sdk-core/src/histfetch.rs +20 -10
  95. package/sdk-core/crates/sdk-core/src/lib.rs +41 -111
  96. package/sdk-core/crates/sdk-core/src/pollers/mod.rs +4 -9
  97. package/sdk-core/crates/sdk-core/src/pollers/poll_buffer.rs +118 -19
  98. package/sdk-core/crates/sdk-core/src/protosext/mod.rs +2 -2
  99. package/sdk-core/crates/sdk-core/src/replay/mod.rs +14 -5
  100. package/sdk-core/crates/sdk-core/src/telemetry/metrics.rs +179 -196
  101. package/sdk-core/crates/sdk-core/src/telemetry/mod.rs +3 -280
  102. package/sdk-core/crates/sdk-core/src/test_help/integ_helpers.rs +6 -9
  103. package/sdk-core/crates/sdk-core/src/test_help/unit_helpers.rs +3 -6
  104. package/sdk-core/crates/sdk-core/src/worker/activities/local_activities.rs +11 -14
  105. package/sdk-core/crates/sdk-core/src/worker/activities.rs +16 -19
  106. package/sdk-core/crates/sdk-core/src/worker/client/mocks.rs +9 -5
  107. package/sdk-core/crates/sdk-core/src/worker/client.rs +103 -81
  108. package/sdk-core/crates/sdk-core/src/worker/heartbeat.rs +7 -11
  109. package/sdk-core/crates/sdk-core/src/worker/mod.rs +1124 -229
  110. package/sdk-core/crates/sdk-core/src/worker/nexus.rs +145 -23
  111. package/sdk-core/crates/sdk-core/src/worker/slot_provider.rs +2 -2
  112. package/sdk-core/crates/sdk-core/src/worker/tuner/fixed_size.rs +2 -2
  113. package/sdk-core/crates/sdk-core/src/worker/tuner/resource_based.rs +13 -13
  114. package/sdk-core/crates/sdk-core/src/worker/tuner.rs +28 -8
  115. package/sdk-core/crates/sdk-core/src/worker/workflow/driven_workflow.rs +9 -3
  116. package/sdk-core/crates/sdk-core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +21 -22
  117. package/sdk-core/crates/sdk-core/src/worker/workflow/machines/workflow_machines.rs +19 -4
  118. package/sdk-core/crates/sdk-core/src/worker/workflow/managed_run.rs +14 -18
  119. package/sdk-core/crates/sdk-core/src/worker/workflow/mod.rs +4 -6
  120. package/sdk-core/crates/sdk-core/src/worker/workflow/run_cache.rs +4 -7
  121. package/sdk-core/crates/sdk-core/src/worker/workflow/wft_extraction.rs +2 -4
  122. package/sdk-core/crates/sdk-core/src/worker/workflow/wft_poller.rs +8 -9
  123. package/sdk-core/crates/sdk-core/src/worker/workflow/workflow_stream.rs +1 -3
  124. package/sdk-core/crates/sdk-core/tests/activities_procmacro.rs +6 -0
  125. package/sdk-core/crates/sdk-core/tests/activities_trybuild/basic_pass.rs +54 -0
  126. package/sdk-core/crates/sdk-core/tests/activities_trybuild/invalid_self_type_fail.rs +18 -0
  127. package/sdk-core/crates/sdk-core/tests/activities_trybuild/invalid_self_type_fail.stderr +5 -0
  128. package/sdk-core/crates/sdk-core/tests/activities_trybuild/missing_context_fail.rs +14 -0
  129. package/sdk-core/crates/sdk-core/tests/activities_trybuild/missing_context_fail.stderr +5 -0
  130. package/sdk-core/crates/sdk-core/tests/activities_trybuild/multi_arg_pass.rs +48 -0
  131. package/sdk-core/crates/sdk-core/tests/activities_trybuild/no_input_pass.rs +14 -0
  132. package/sdk-core/crates/sdk-core/tests/activities_trybuild/no_return_type_pass.rs +19 -0
  133. package/sdk-core/crates/sdk-core/tests/cloud_tests.rs +14 -5
  134. package/sdk-core/crates/sdk-core/tests/common/activity_functions.rs +55 -0
  135. package/sdk-core/crates/sdk-core/tests/common/mod.rs +241 -196
  136. package/sdk-core/crates/sdk-core/tests/common/workflows.rs +41 -28
  137. package/sdk-core/crates/sdk-core/tests/global_metric_tests.rs +3 -5
  138. package/sdk-core/crates/sdk-core/tests/heavy_tests/fuzzy_workflow.rs +73 -64
  139. package/sdk-core/crates/sdk-core/tests/heavy_tests.rs +298 -252
  140. package/sdk-core/crates/sdk-core/tests/integ_tests/async_activity_client_tests.rs +230 -0
  141. package/sdk-core/crates/sdk-core/tests/integ_tests/client_tests.rs +94 -57
  142. package/sdk-core/crates/sdk-core/tests/integ_tests/data_converter_tests.rs +381 -0
  143. package/sdk-core/crates/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +16 -12
  144. package/sdk-core/crates/sdk-core/tests/integ_tests/heartbeat_tests.rs +48 -40
  145. package/sdk-core/crates/sdk-core/tests/integ_tests/metrics_tests.rs +327 -255
  146. package/sdk-core/crates/sdk-core/tests/integ_tests/pagination_tests.rs +50 -45
  147. package/sdk-core/crates/sdk-core/tests/integ_tests/polling_tests.rs +147 -126
  148. package/sdk-core/crates/sdk-core/tests/integ_tests/queries_tests.rs +103 -89
  149. package/sdk-core/crates/sdk-core/tests/integ_tests/update_tests.rs +609 -453
  150. package/sdk-core/crates/sdk-core/tests/integ_tests/visibility_tests.rs +80 -62
  151. package/sdk-core/crates/sdk-core/tests/integ_tests/worker_heartbeat_tests.rs +360 -231
  152. package/sdk-core/crates/sdk-core/tests/integ_tests/worker_tests.rs +248 -185
  153. package/sdk-core/crates/sdk-core/tests/integ_tests/worker_versioning_tests.rs +52 -43
  154. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_client_tests.rs +180 -0
  155. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/activities.rs +428 -315
  156. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +82 -56
  157. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +56 -28
  158. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +364 -243
  159. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/client_interactions.rs +552 -0
  160. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +101 -42
  161. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +243 -147
  162. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/eager.rs +98 -28
  163. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +1475 -1036
  164. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +73 -41
  165. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/nexus.rs +397 -238
  166. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/patches.rs +414 -189
  167. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/queries.rs +415 -0
  168. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/replay.rs +96 -36
  169. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/resets.rs +154 -137
  170. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/signals.rs +183 -105
  171. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +85 -38
  172. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/timers.rs +142 -40
  173. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +73 -54
  174. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests.rs +363 -226
  175. package/sdk-core/crates/sdk-core/tests/main.rs +17 -15
  176. package/sdk-core/crates/sdk-core/tests/manual_tests.rs +207 -152
  177. package/sdk-core/crates/sdk-core/tests/shared_tests/mod.rs +65 -34
  178. package/sdk-core/crates/sdk-core/tests/shared_tests/priority.rs +107 -84
  179. package/sdk-core/crates/sdk-core/tests/workflows_procmacro.rs +6 -0
  180. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/async_query_fail.rs +26 -0
  181. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/async_query_fail.stderr +5 -0
  182. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/basic_pass.rs +49 -0
  183. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/minimal_pass.rs +21 -0
  184. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/mut_query_fail.rs +26 -0
  185. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/mut_query_fail.stderr +5 -0
  186. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/sync_run_fail.rs +21 -0
  187. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/sync_run_fail.stderr +5 -0
  188. package/sdk-core/crates/sdk-core-c-bridge/Cargo.toml +7 -1
  189. package/sdk-core/crates/sdk-core-c-bridge/include/temporal-sdk-core-c-bridge.h +14 -14
  190. package/sdk-core/crates/sdk-core-c-bridge/src/client.rs +83 -74
  191. package/sdk-core/crates/sdk-core-c-bridge/src/metric.rs +9 -14
  192. package/sdk-core/crates/sdk-core-c-bridge/src/runtime.rs +1 -2
  193. package/sdk-core/crates/sdk-core-c-bridge/src/tests/context.rs +13 -13
  194. package/sdk-core/crates/sdk-core-c-bridge/src/tests/mod.rs +6 -6
  195. package/sdk-core/crates/sdk-core-c-bridge/src/tests/utils.rs +3 -4
  196. package/sdk-core/crates/sdk-core-c-bridge/src/worker.rs +62 -75
  197. package/sdk-core/rustfmt.toml +2 -1
  198. package/src/client.rs +205 -318
  199. package/src/metrics.rs +22 -30
  200. package/src/runtime.rs +4 -5
  201. package/src/worker.rs +16 -19
  202. package/ts/native.ts +1 -1
  203. package/sdk-core/crates/client/src/workflow_handle/mod.rs +0 -212
  204. package/sdk-core/crates/common/src/errors.rs +0 -85
  205. package/sdk-core/crates/common/tests/worker_task_types_test.rs +0 -129
  206. package/sdk-core/crates/sdk/src/activity_context.rs +0 -238
  207. package/sdk-core/crates/sdk/src/app_data.rs +0 -37
  208. package/sdk-core/crates/sdk-core/tests/integ_tests/activity_functions.rs +0 -5
  209. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
@@ -2,8 +2,12 @@ use crate::common::{CoreWfStarter, init_core_and_create_wf};
2
2
  use assert_matches::assert_matches;
3
3
  use futures_util::{FutureExt, StreamExt, future::join_all, stream::FuturesUnordered};
4
4
  use std::time::{Duration, Instant};
5
- use temporalio_client::WorkflowClientTrait;
5
+ use temporalio_client::{
6
+ NamespacedClient, UntypedQuery, UntypedSignal, UntypedWorkflow, WorkflowExecutionInfo,
7
+ WorkflowQueryOptions, WorkflowSignalOptions, WorkflowTerminateOptions,
8
+ };
6
9
  use temporalio_common::{
10
+ data_converters::RawValue,
7
11
  prost_dur,
8
12
  protos::{
9
13
  coresdk::{
@@ -11,7 +15,7 @@ use temporalio_common::{
11
15
  workflow_commands::{QueryResult, QuerySuccess, StartTimer},
12
16
  workflow_completion::WorkflowActivationCompletion,
13
17
  },
14
- temporal::api::{failure::v1::Failure, query::v1::WorkflowQuery},
18
+ temporal::api::failure::v1::Failure,
15
19
  test_utils::start_timer_cmd,
16
20
  },
17
21
  };
@@ -45,20 +49,20 @@ async fn simple_query_legacy() {
45
49
  tokio::time::sleep(Duration::from_secs(1)).await;
46
50
  // Query after timer should have fired and there should be new WFT
47
51
  let query_fut = async {
48
- starter
49
- .get_client()
50
- .await
51
- .query_workflow_execution(
52
- workflow_id,
53
- task.run_id.to_string(),
54
- WorkflowQuery {
55
- query_type: "myquery".to_string(),
56
- query_args: Some(b"hi".into()),
57
- header: None,
58
- },
59
- )
60
- .await
61
- .unwrap()
52
+ WorkflowExecutionInfo {
53
+ namespace: starter.get_client().await.namespace(),
54
+ workflow_id,
55
+ run_id: Some(task.run_id.to_string()),
56
+ first_execution_run_id: None,
57
+ }
58
+ .bind_untyped(starter.get_client().await.clone())
59
+ .query(
60
+ UntypedQuery::new("myquery"),
61
+ RawValue::empty(),
62
+ WorkflowQueryOptions::default(),
63
+ )
64
+ .await
65
+ .unwrap()
62
66
  };
63
67
  let workflow_completions_future = async {
64
68
  // Give query a beat to get going
@@ -108,7 +112,7 @@ async fn simple_query_legacy() {
108
112
  };
109
113
  let (q_resp, _) = join!(query_fut, workflow_completions_future);
110
114
  // Ensure query response is as expected
111
- assert_eq!(&q_resp.unwrap()[0].data, query_resp);
115
+ assert_eq!(&q_resp.payloads[0].data, query_resp);
112
116
  }
113
117
 
114
118
  #[rstest]
@@ -192,20 +196,22 @@ async fn query_after_execution_complete(#[case] do_evict: bool) {
192
196
  for _ in 0..3 {
193
197
  let gw = starter.get_client().await.clone();
194
198
  let query_fut = async move {
195
- let q_resp = gw
196
- .query_workflow_execution(
197
- workflow_id.to_string(),
198
- run_id.to_string(),
199
- WorkflowQuery {
200
- query_type: "myquery".to_string(),
201
- query_args: Some(b"hi".into()),
202
- header: None,
203
- },
204
- )
205
- .await
206
- .unwrap();
199
+ let q_resp: RawValue = WorkflowExecutionInfo {
200
+ namespace: gw.namespace(),
201
+ workflow_id: workflow_id.to_string(),
202
+ run_id: Some(run_id.to_string()),
203
+ first_execution_run_id: None,
204
+ }
205
+ .bind_untyped(gw.clone())
206
+ .query(
207
+ UntypedQuery::new("myquery"),
208
+ RawValue::empty(),
209
+ WorkflowQueryOptions::default(),
210
+ )
211
+ .await
212
+ .unwrap();
207
213
  // Ensure query response is as expected
208
- assert_eq!(q_resp.unwrap()[0].data, query_resp);
214
+ assert_eq!(q_resp.payloads[0].data, query_resp);
209
215
  };
210
216
 
211
217
  query_futs.push(query_fut.boxed());
@@ -232,20 +238,20 @@ async fn fail_legacy_query(#[case] with_nde: bool) {
232
238
  core.complete_execution(&task.run_id).await;
233
239
  core.handle_eviction().await;
234
240
  let query_fut = async {
235
- starter
236
- .get_client()
237
- .await
238
- .query_workflow_execution(
239
- workflow_id.to_string(),
240
- task.run_id.to_string(),
241
- WorkflowQuery {
242
- query_type: "myquery".to_string(),
243
- query_args: Some(b"hi".into()),
244
- header: None,
245
- },
246
- )
247
- .await
248
- .unwrap_err()
241
+ WorkflowExecutionInfo {
242
+ namespace: starter.get_client().await.namespace(),
243
+ workflow_id: workflow_id.to_string(),
244
+ run_id: Some(task.run_id.to_string()),
245
+ first_execution_run_id: None,
246
+ }
247
+ .bind_untyped(starter.get_client().await.clone())
248
+ .query(
249
+ UntypedQuery::new("myquery"),
250
+ RawValue::empty(),
251
+ WorkflowQueryOptions::default(),
252
+ )
253
+ .await
254
+ .unwrap_err()
249
255
  };
250
256
  let query_responder = async {
251
257
  // Have to replay first since we've evicted
@@ -280,10 +286,11 @@ async fn fail_legacy_query(#[case] with_nde: bool) {
280
286
  };
281
287
  let (q_resp, _) = join!(query_fut, query_responder);
282
288
  // Ensure query response is a failure and has the right message
289
+ let err_msg = q_resp.to_string();
283
290
  if with_nde {
284
- assert!(q_resp.message().contains("TMPRL1100"));
291
+ assert!(err_msg.contains("TMPRL1100"));
285
292
  } else {
286
- assert_eq!(q_resp.message(), query_err);
293
+ assert!(err_msg.contains(query_err));
287
294
  }
288
295
  }
289
296
 
@@ -303,18 +310,20 @@ async fn multiple_concurrent_queries_no_new_history() {
303
310
  let client = starter.get_client().await;
304
311
  let num_queries = 10;
305
312
  let query_futs = (1..=num_queries).map(|_| async {
306
- client
307
- .query_workflow_execution(
308
- workflow_id.to_string(),
309
- task.run_id.to_string(),
310
- WorkflowQuery {
311
- query_type: "myquery".to_string(),
312
- query_args: Some(b"hi".into()),
313
- header: None,
314
- },
315
- )
316
- .await
317
- .unwrap();
313
+ WorkflowExecutionInfo {
314
+ namespace: client.namespace(),
315
+ workflow_id: workflow_id.to_string(),
316
+ run_id: Some(task.run_id.to_string()),
317
+ first_execution_run_id: None,
318
+ }
319
+ .bind_untyped(client.clone())
320
+ .query(
321
+ UntypedQuery::new("myquery"),
322
+ RawValue::empty(),
323
+ WorkflowQueryOptions::default(),
324
+ )
325
+ .await
326
+ .unwrap();
318
327
  });
319
328
  let complete_fut = async {
320
329
  for _ in 1..=num_queries {
@@ -345,7 +354,8 @@ async fn multiple_concurrent_queries_no_new_history() {
345
354
  join!(join_all(query_futs), complete_fut);
346
355
  // No need to properly finish
347
356
  client
348
- .terminate_workflow_execution(workflow_id, None)
357
+ .get_workflow_handle::<UntypedWorkflow>(workflow_id)
358
+ .terminate(WorkflowTerminateOptions::default())
349
359
  .await
350
360
  .unwrap();
351
361
  // This test should not take a long time. Things can still work, but if it takes a long time
@@ -370,18 +380,20 @@ async fn queries_handled_before_next_wft() {
370
380
  let client = starter.get_client().await;
371
381
  // Send two queries so that one of them is buffered
372
382
  let query_futs = (1..=2).map(|_| async {
373
- client
374
- .query_workflow_execution(
375
- workflow_id.to_string(),
376
- task.run_id.to_string(),
377
- WorkflowQuery {
378
- query_type: "myquery".to_string(),
379
- query_args: Some(b"hi".into()),
380
- header: None,
381
- },
382
- )
383
- .await
384
- .unwrap();
383
+ WorkflowExecutionInfo {
384
+ namespace: client.namespace(),
385
+ workflow_id: workflow_id.to_string(),
386
+ run_id: Some(task.run_id.to_string()),
387
+ first_execution_run_id: None,
388
+ }
389
+ .bind_untyped(client.clone())
390
+ .query(
391
+ UntypedQuery::new("myquery"),
392
+ RawValue::empty(),
393
+ WorkflowQueryOptions::default(),
394
+ )
395
+ .await
396
+ .unwrap();
385
397
  });
386
398
  let complete_fut = async {
387
399
  let task = core.poll_workflow_activation().await.unwrap();
@@ -393,16 +405,20 @@ async fn queries_handled_before_next_wft() {
393
405
  );
394
406
  // While handling the first query, signal the workflow so a new WFT is generated and the
395
407
  // second query is still in the buffer
396
- client
397
- .signal_workflow_execution(
398
- workflow_id.to_string(),
399
- task.run_id.to_string(),
400
- "blah".to_string(),
401
- None,
402
- None,
403
- )
404
- .await
405
- .unwrap();
408
+ WorkflowExecutionInfo {
409
+ namespace: client.namespace(),
410
+ workflow_id: workflow_id.to_string(),
411
+ run_id: Some(task.run_id.to_string()),
412
+ first_execution_run_id: None,
413
+ }
414
+ .bind_untyped(client.clone())
415
+ .signal(
416
+ UntypedSignal::new("blah"),
417
+ RawValue::empty(),
418
+ WorkflowSignalOptions::default(),
419
+ )
420
+ .await
421
+ .unwrap();
406
422
  tokio::time::sleep(Duration::from_millis(500)).await;
407
423
  core.complete_workflow_activation(WorkflowActivationCompletion::from_cmd(
408
424
  task.run_id,
@@ -465,13 +481,11 @@ async fn query_should_not_be_sent_if_wft_about_to_fail() {
465
481
  let workflow_id = starter.get_task_queue().to_string();
466
482
  let client = starter.get_client().await;
467
483
  // query straight away
468
- let query_fut = client.query_workflow_execution(
469
- workflow_id.to_string(),
470
- "".to_string(),
471
- WorkflowQuery {
472
- query_type: "myquery".to_string(),
473
- ..Default::default()
474
- },
484
+ let handle = client.get_workflow_handle::<UntypedWorkflow>(workflow_id.to_string());
485
+ let query_fut = handle.query(
486
+ UntypedQuery::new("myquery"),
487
+ RawValue::empty(),
488
+ WorkflowQueryOptions::default(),
475
489
  );
476
490
  // Poll for the task and respond with a task failure
477
491
  let poll_and_fail_fut = async {
@@ -528,6 +542,6 @@ async fn query_should_not_be_sent_if_wft_about_to_fail() {
528
542
  .unwrap();
529
543
  };
530
544
  let (qres, _) = join!(query_fut, poll_and_fail_fut);
531
- let qres = qres.unwrap().query_result.unwrap();
545
+ let qres = qres.unwrap();
532
546
  assert_eq!(qres.payloads[0].data, b"done");
533
547
  }