@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.
- package/Cargo.lock +172 -70
- package/lib/native.d.ts +1 -1
- package/package.json +2 -2
- package/releases/aarch64-apple-darwin/index.node +0 -0
- package/releases/aarch64-unknown-linux-gnu/index.node +0 -0
- package/releases/x86_64-apple-darwin/index.node +0 -0
- package/releases/x86_64-pc-windows-msvc/index.node +0 -0
- package/releases/x86_64-unknown-linux-gnu/index.node +0 -0
- package/sdk-core/.github/workflows/per-pr.yml +6 -6
- package/sdk-core/AGENTS.md +41 -30
- package/sdk-core/Cargo.toml +3 -0
- package/sdk-core/README.md +15 -9
- package/sdk-core/crates/client/Cargo.toml +4 -0
- package/sdk-core/crates/client/README.md +139 -0
- package/sdk-core/crates/client/src/async_activity_handle.rs +297 -0
- package/sdk-core/crates/client/src/callback_based.rs +7 -0
- package/sdk-core/crates/client/src/errors.rs +294 -0
- package/sdk-core/crates/client/src/{raw.rs → grpc.rs} +280 -159
- package/sdk-core/crates/client/src/lib.rs +920 -1326
- package/sdk-core/crates/client/src/metrics.rs +24 -33
- package/sdk-core/crates/client/src/options_structs.rs +457 -0
- package/sdk-core/crates/client/src/replaceable.rs +5 -4
- package/sdk-core/crates/client/src/request_extensions.rs +8 -9
- package/sdk-core/crates/client/src/retry.rs +99 -54
- package/sdk-core/crates/client/src/{worker/mod.rs → worker.rs} +1 -1
- package/sdk-core/crates/client/src/workflow_handle.rs +826 -0
- package/sdk-core/crates/common/Cargo.toml +61 -2
- package/sdk-core/crates/common/build.rs +742 -12
- package/sdk-core/crates/common/protos/api_upstream/.github/workflows/ci.yml +2 -0
- package/sdk-core/crates/common/protos/api_upstream/Makefile +2 -1
- package/sdk-core/crates/common/protos/api_upstream/buf.yaml +0 -3
- package/sdk-core/crates/common/protos/api_upstream/cmd/check-path-conflicts/main.go +137 -0
- package/sdk-core/crates/common/protos/api_upstream/openapi/openapiv2.json +1166 -770
- package/sdk-core/crates/common/protos/api_upstream/openapi/openapiv3.yaml +1243 -750
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/deployment/v1/message.proto +2 -2
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/enums/v1/workflow.proto +4 -3
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/failure/v1/message.proto +1 -0
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/history/v1/message.proto +4 -0
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/namespace/v1/message.proto +6 -0
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/nexus/v1/message.proto +16 -1
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +64 -6
- package/sdk-core/crates/common/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +88 -33
- package/sdk-core/crates/common/protos/local/temporal/sdk/core/nexus/nexus.proto +4 -2
- package/sdk-core/crates/common/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +4 -0
- package/sdk-core/crates/common/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +5 -5
- package/sdk-core/crates/common/src/activity_definition.rs +20 -0
- package/sdk-core/crates/common/src/data_converters.rs +770 -0
- package/sdk-core/crates/common/src/envconfig.rs +5 -0
- package/sdk-core/crates/common/src/lib.rs +15 -211
- package/sdk-core/crates/common/src/payload_visitor.rs +648 -0
- package/sdk-core/crates/common/src/priority.rs +110 -0
- package/sdk-core/crates/common/src/protos/canned_histories.rs +3 -0
- package/sdk-core/crates/common/src/protos/history_builder.rs +45 -0
- package/sdk-core/crates/common/src/protos/history_info.rs +2 -0
- package/sdk-core/crates/common/src/protos/mod.rs +122 -27
- package/sdk-core/crates/common/src/protos/task_token.rs +3 -3
- package/sdk-core/crates/common/src/protos/utilities.rs +11 -0
- package/sdk-core/crates/{sdk-core → common}/src/telemetry/log_export.rs +5 -7
- package/sdk-core/crates/common/src/telemetry/metrics/core.rs +125 -0
- package/sdk-core/crates/common/src/telemetry/metrics.rs +268 -223
- package/sdk-core/crates/{sdk-core → common}/src/telemetry/otel.rs +8 -13
- package/sdk-core/crates/{sdk-core → common}/src/telemetry/prometheus_meter.rs +49 -50
- package/sdk-core/crates/{sdk-core → common}/src/telemetry/prometheus_server.rs +2 -3
- package/sdk-core/crates/common/src/telemetry.rs +264 -4
- package/sdk-core/crates/common/src/worker.rs +68 -603
- package/sdk-core/crates/common/src/workflow_definition.rs +60 -0
- package/sdk-core/crates/macros/Cargo.toml +5 -1
- package/sdk-core/crates/macros/src/activities_definitions.rs +585 -0
- package/sdk-core/crates/macros/src/fsm_impl.rs +507 -0
- package/sdk-core/crates/macros/src/lib.rs +138 -512
- package/sdk-core/crates/macros/src/macro_utils.rs +106 -0
- package/sdk-core/crates/macros/src/workflow_definitions.rs +1224 -0
- package/sdk-core/crates/sdk/Cargo.toml +19 -6
- package/sdk-core/crates/sdk/README.md +415 -0
- package/sdk-core/crates/sdk/src/activities.rs +417 -0
- package/sdk-core/crates/sdk/src/interceptors.rs +1 -1
- package/sdk-core/crates/sdk/src/lib.rs +757 -442
- package/sdk-core/crates/sdk/src/workflow_context/options.rs +45 -35
- package/sdk-core/crates/sdk/src/workflow_context.rs +1033 -289
- package/sdk-core/crates/sdk/src/workflow_future.rs +277 -213
- package/sdk-core/crates/sdk/src/workflows.rs +711 -0
- package/sdk-core/crates/sdk-core/Cargo.toml +57 -64
- package/sdk-core/crates/sdk-core/benches/workflow_replay_bench.rs +41 -35
- package/sdk-core/crates/sdk-core/machine_coverage/ActivityMachine_Coverage.puml +1 -1
- package/sdk-core/crates/sdk-core/src/abstractions.rs +6 -10
- package/sdk-core/crates/sdk-core/src/core_tests/activity_tasks.rs +6 -5
- package/sdk-core/crates/sdk-core/src/core_tests/mod.rs +13 -15
- package/sdk-core/crates/sdk-core/src/core_tests/queries.rs +21 -25
- package/sdk-core/crates/sdk-core/src/core_tests/replay_flag.rs +7 -10
- package/sdk-core/crates/sdk-core/src/core_tests/updates.rs +14 -17
- package/sdk-core/crates/sdk-core/src/core_tests/workers.rs +493 -26
- package/sdk-core/crates/sdk-core/src/core_tests/workflow_tasks.rs +4 -8
- package/sdk-core/crates/sdk-core/src/ephemeral_server/mod.rs +7 -7
- package/sdk-core/crates/sdk-core/src/histfetch.rs +20 -10
- package/sdk-core/crates/sdk-core/src/lib.rs +41 -111
- package/sdk-core/crates/sdk-core/src/pollers/mod.rs +4 -9
- package/sdk-core/crates/sdk-core/src/pollers/poll_buffer.rs +118 -19
- package/sdk-core/crates/sdk-core/src/protosext/mod.rs +2 -2
- package/sdk-core/crates/sdk-core/src/replay/mod.rs +14 -5
- package/sdk-core/crates/sdk-core/src/telemetry/metrics.rs +179 -196
- package/sdk-core/crates/sdk-core/src/telemetry/mod.rs +3 -280
- package/sdk-core/crates/sdk-core/src/test_help/integ_helpers.rs +6 -9
- package/sdk-core/crates/sdk-core/src/test_help/unit_helpers.rs +3 -6
- package/sdk-core/crates/sdk-core/src/worker/activities/local_activities.rs +11 -14
- package/sdk-core/crates/sdk-core/src/worker/activities.rs +16 -19
- package/sdk-core/crates/sdk-core/src/worker/client/mocks.rs +9 -5
- package/sdk-core/crates/sdk-core/src/worker/client.rs +103 -81
- package/sdk-core/crates/sdk-core/src/worker/heartbeat.rs +7 -11
- package/sdk-core/crates/sdk-core/src/worker/mod.rs +1124 -229
- package/sdk-core/crates/sdk-core/src/worker/nexus.rs +145 -23
- package/sdk-core/crates/sdk-core/src/worker/slot_provider.rs +2 -2
- package/sdk-core/crates/sdk-core/src/worker/tuner/fixed_size.rs +2 -2
- package/sdk-core/crates/sdk-core/src/worker/tuner/resource_based.rs +13 -13
- package/sdk-core/crates/sdk-core/src/worker/tuner.rs +28 -8
- package/sdk-core/crates/sdk-core/src/worker/workflow/driven_workflow.rs +9 -3
- package/sdk-core/crates/sdk-core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +21 -22
- package/sdk-core/crates/sdk-core/src/worker/workflow/machines/workflow_machines.rs +19 -4
- package/sdk-core/crates/sdk-core/src/worker/workflow/managed_run.rs +14 -18
- package/sdk-core/crates/sdk-core/src/worker/workflow/mod.rs +4 -6
- package/sdk-core/crates/sdk-core/src/worker/workflow/run_cache.rs +4 -7
- package/sdk-core/crates/sdk-core/src/worker/workflow/wft_extraction.rs +2 -4
- package/sdk-core/crates/sdk-core/src/worker/workflow/wft_poller.rs +8 -9
- package/sdk-core/crates/sdk-core/src/worker/workflow/workflow_stream.rs +1 -3
- package/sdk-core/crates/sdk-core/tests/activities_procmacro.rs +6 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/basic_pass.rs +54 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/invalid_self_type_fail.rs +18 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/invalid_self_type_fail.stderr +5 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/missing_context_fail.rs +14 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/missing_context_fail.stderr +5 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/multi_arg_pass.rs +48 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/no_input_pass.rs +14 -0
- package/sdk-core/crates/sdk-core/tests/activities_trybuild/no_return_type_pass.rs +19 -0
- package/sdk-core/crates/sdk-core/tests/cloud_tests.rs +14 -5
- package/sdk-core/crates/sdk-core/tests/common/activity_functions.rs +55 -0
- package/sdk-core/crates/sdk-core/tests/common/mod.rs +241 -196
- package/sdk-core/crates/sdk-core/tests/common/workflows.rs +41 -28
- package/sdk-core/crates/sdk-core/tests/global_metric_tests.rs +3 -5
- package/sdk-core/crates/sdk-core/tests/heavy_tests/fuzzy_workflow.rs +73 -64
- package/sdk-core/crates/sdk-core/tests/heavy_tests.rs +298 -252
- package/sdk-core/crates/sdk-core/tests/integ_tests/async_activity_client_tests.rs +230 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/client_tests.rs +94 -57
- package/sdk-core/crates/sdk-core/tests/integ_tests/data_converter_tests.rs +381 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +16 -12
- package/sdk-core/crates/sdk-core/tests/integ_tests/heartbeat_tests.rs +48 -40
- package/sdk-core/crates/sdk-core/tests/integ_tests/metrics_tests.rs +327 -255
- package/sdk-core/crates/sdk-core/tests/integ_tests/pagination_tests.rs +50 -45
- package/sdk-core/crates/sdk-core/tests/integ_tests/polling_tests.rs +147 -126
- package/sdk-core/crates/sdk-core/tests/integ_tests/queries_tests.rs +103 -89
- package/sdk-core/crates/sdk-core/tests/integ_tests/update_tests.rs +609 -453
- package/sdk-core/crates/sdk-core/tests/integ_tests/visibility_tests.rs +80 -62
- package/sdk-core/crates/sdk-core/tests/integ_tests/worker_heartbeat_tests.rs +360 -231
- package/sdk-core/crates/sdk-core/tests/integ_tests/worker_tests.rs +248 -185
- package/sdk-core/crates/sdk-core/tests/integ_tests/worker_versioning_tests.rs +52 -43
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_client_tests.rs +180 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/activities.rs +428 -315
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +82 -56
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +56 -28
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +364 -243
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/client_interactions.rs +552 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +101 -42
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +243 -147
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/eager.rs +98 -28
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +1475 -1036
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +73 -41
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/nexus.rs +397 -238
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/patches.rs +414 -189
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/queries.rs +415 -0
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/replay.rs +96 -36
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/resets.rs +154 -137
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/signals.rs +183 -105
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +85 -38
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/timers.rs +142 -40
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +73 -54
- package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests.rs +363 -226
- package/sdk-core/crates/sdk-core/tests/main.rs +17 -15
- package/sdk-core/crates/sdk-core/tests/manual_tests.rs +207 -152
- package/sdk-core/crates/sdk-core/tests/shared_tests/mod.rs +65 -34
- package/sdk-core/crates/sdk-core/tests/shared_tests/priority.rs +107 -84
- package/sdk-core/crates/sdk-core/tests/workflows_procmacro.rs +6 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/async_query_fail.rs +26 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/async_query_fail.stderr +5 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/basic_pass.rs +49 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/minimal_pass.rs +21 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/mut_query_fail.rs +26 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/mut_query_fail.stderr +5 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/sync_run_fail.rs +21 -0
- package/sdk-core/crates/sdk-core/tests/workflows_trybuild/sync_run_fail.stderr +5 -0
- package/sdk-core/crates/sdk-core-c-bridge/Cargo.toml +7 -1
- package/sdk-core/crates/sdk-core-c-bridge/include/temporal-sdk-core-c-bridge.h +14 -14
- package/sdk-core/crates/sdk-core-c-bridge/src/client.rs +83 -74
- package/sdk-core/crates/sdk-core-c-bridge/src/metric.rs +9 -14
- package/sdk-core/crates/sdk-core-c-bridge/src/runtime.rs +1 -2
- package/sdk-core/crates/sdk-core-c-bridge/src/tests/context.rs +13 -13
- package/sdk-core/crates/sdk-core-c-bridge/src/tests/mod.rs +6 -6
- package/sdk-core/crates/sdk-core-c-bridge/src/tests/utils.rs +3 -4
- package/sdk-core/crates/sdk-core-c-bridge/src/worker.rs +62 -75
- package/sdk-core/rustfmt.toml +2 -1
- package/src/client.rs +205 -318
- package/src/metrics.rs +22 -30
- package/src/runtime.rs +4 -5
- package/src/worker.rs +16 -19
- package/ts/native.ts +1 -1
- package/sdk-core/crates/client/src/workflow_handle/mod.rs +0 -212
- package/sdk-core/crates/common/src/errors.rs +0 -85
- package/sdk-core/crates/common/tests/worker_task_types_test.rs +0 -129
- package/sdk-core/crates/sdk/src/activity_context.rs +0 -238
- package/sdk-core/crates/sdk/src/app_data.rs +0 -37
- package/sdk-core/crates/sdk-core/tests/integ_tests/activity_functions.rs +0 -5
- 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::
|
|
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::
|
|
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
|
-
|
|
49
|
-
.get_client()
|
|
50
|
-
|
|
51
|
-
.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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.
|
|
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 =
|
|
196
|
-
.
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
)
|
|
205
|
-
|
|
206
|
-
|
|
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.
|
|
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
|
-
|
|
236
|
-
.get_client()
|
|
237
|
-
.
|
|
238
|
-
.
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
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!(
|
|
291
|
+
assert!(err_msg.contains("TMPRL1100"));
|
|
285
292
|
} else {
|
|
286
|
-
|
|
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
|
-
|
|
307
|
-
.
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
)
|
|
316
|
-
|
|
317
|
-
|
|
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
|
-
.
|
|
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
|
-
|
|
374
|
-
.
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
)
|
|
383
|
-
|
|
384
|
-
|
|
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
|
-
|
|
397
|
-
.
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
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
|
|
469
|
-
|
|
470
|
-
""
|
|
471
|
-
|
|
472
|
-
|
|
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()
|
|
545
|
+
let qres = qres.unwrap();
|
|
532
546
|
assert_eq!(qres.payloads[0].data, b"done");
|
|
533
547
|
}
|