@temporalio/core-bridge 1.5.2 → 1.7.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.
- package/Cargo.lock +304 -112
- package/lib/index.d.ts +8 -6
- package/lib/index.js.map +1 -1
- package/package.json +9 -4
- 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/.buildkite/docker/Dockerfile +2 -2
- package/sdk-core/.buildkite/docker/docker-compose.yaml +1 -1
- package/sdk-core/.buildkite/pipeline.yml +2 -4
- package/sdk-core/.cargo/config.toml +5 -2
- package/sdk-core/.github/workflows/heavy.yml +29 -0
- package/sdk-core/Cargo.toml +1 -1
- package/sdk-core/README.md +20 -10
- package/sdk-core/client/src/lib.rs +215 -39
- package/sdk-core/client/src/metrics.rs +17 -8
- package/sdk-core/client/src/raw.rs +4 -4
- package/sdk-core/client/src/retry.rs +32 -20
- package/sdk-core/core/Cargo.toml +25 -12
- package/sdk-core/core/src/abstractions/take_cell.rs +28 -0
- package/sdk-core/core/src/abstractions.rs +204 -14
- package/sdk-core/core/src/core_tests/activity_tasks.rs +143 -50
- package/sdk-core/core/src/core_tests/child_workflows.rs +6 -5
- package/sdk-core/core/src/core_tests/determinism.rs +165 -2
- package/sdk-core/core/src/core_tests/local_activities.rs +431 -43
- package/sdk-core/core/src/core_tests/queries.rs +34 -16
- package/sdk-core/core/src/core_tests/workers.rs +8 -5
- package/sdk-core/core/src/core_tests/workflow_tasks.rs +588 -55
- package/sdk-core/core/src/ephemeral_server/mod.rs +113 -12
- package/sdk-core/core/src/internal_flags.rs +155 -0
- package/sdk-core/core/src/lib.rs +16 -9
- package/sdk-core/core/src/protosext/mod.rs +1 -1
- package/sdk-core/core/src/replay/mod.rs +16 -27
- package/sdk-core/core/src/telemetry/log_export.rs +1 -1
- package/sdk-core/core/src/telemetry/metrics.rs +69 -35
- package/sdk-core/core/src/telemetry/mod.rs +60 -21
- package/sdk-core/core/src/telemetry/prometheus_server.rs +19 -13
- package/sdk-core/core/src/test_help/mod.rs +73 -14
- package/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +119 -160
- package/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +89 -0
- package/sdk-core/core/src/worker/activities/local_activities.rs +379 -129
- package/sdk-core/core/src/worker/activities.rs +350 -175
- package/sdk-core/core/src/worker/client/mocks.rs +22 -2
- package/sdk-core/core/src/worker/client.rs +18 -2
- package/sdk-core/core/src/worker/mod.rs +183 -64
- package/sdk-core/core/src/worker/workflow/bridge.rs +1 -3
- package/sdk-core/core/src/worker/workflow/driven_workflow.rs +3 -5
- package/sdk-core/core/src/worker/workflow/history_update.rs +916 -277
- package/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +216 -183
- package/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +9 -12
- package/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +7 -9
- package/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +160 -87
- package/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +13 -14
- package/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +7 -9
- package/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +14 -17
- package/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +242 -110
- package/sdk-core/core/src/worker/workflow/machines/mod.rs +27 -19
- package/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +9 -11
- package/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +321 -206
- package/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +13 -18
- package/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +20 -29
- package/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +2 -2
- package/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +257 -51
- package/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +6 -17
- package/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +310 -150
- package/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +17 -20
- package/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +31 -15
- package/sdk-core/core/src/worker/workflow/managed_run.rs +1052 -380
- package/sdk-core/core/src/worker/workflow/mod.rs +598 -390
- package/sdk-core/core/src/worker/workflow/run_cache.rs +40 -57
- package/sdk-core/core/src/worker/workflow/wft_extraction.rs +137 -0
- package/sdk-core/core/src/worker/workflow/wft_poller.rs +1 -4
- package/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +117 -0
- package/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +24 -0
- package/sdk-core/core/src/worker/workflow/workflow_stream.rs +469 -718
- package/sdk-core/core-api/Cargo.toml +2 -1
- package/sdk-core/core-api/src/errors.rs +1 -34
- package/sdk-core/core-api/src/lib.rs +19 -9
- package/sdk-core/core-api/src/telemetry.rs +4 -6
- package/sdk-core/core-api/src/worker.rs +19 -1
- package/sdk-core/etc/deps.svg +115 -140
- package/sdk-core/etc/regen-depgraph.sh +5 -0
- package/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +86 -61
- package/sdk-core/fsm/rustfsm_trait/src/lib.rs +29 -71
- package/sdk-core/histories/ends_empty_wft_complete.bin +0 -0
- package/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
- package/sdk-core/histories/old_change_marker_format.bin +0 -0
- package/sdk-core/protos/api_upstream/.github/CODEOWNERS +2 -1
- package/sdk-core/protos/api_upstream/Makefile +6 -6
- package/sdk-core/protos/api_upstream/build/go.mod +7 -0
- package/sdk-core/protos/api_upstream/build/go.sum +5 -0
- package/sdk-core/protos/api_upstream/build/tools.go +29 -0
- package/sdk-core/protos/api_upstream/go.mod +6 -0
- package/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +9 -2
- package/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +7 -26
- package/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +13 -2
- package/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +3 -2
- package/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +3 -7
- package/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +3 -2
- package/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +8 -8
- package/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +25 -2
- package/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +24 -19
- package/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +49 -26
- package/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +4 -2
- package/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +5 -2
- package/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +57 -0
- package/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +63 -0
- package/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +71 -6
- package/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +2 -2
- package/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +64 -28
- package/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +4 -4
- package/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +7 -8
- package/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +10 -7
- package/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +19 -30
- package/sdk-core/protos/local/temporal/sdk/core/common/common.proto +1 -0
- package/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +1 -0
- package/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +8 -0
- package/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +67 -60
- package/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +85 -84
- package/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +9 -3
- package/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +2 -2
- package/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +2 -2
- package/sdk-core/sdk/Cargo.toml +5 -4
- package/sdk-core/sdk/src/lib.rs +108 -26
- package/sdk-core/sdk/src/workflow_context/options.rs +7 -1
- package/sdk-core/sdk/src/workflow_context.rs +24 -17
- package/sdk-core/sdk/src/workflow_future.rs +16 -15
- package/sdk-core/sdk-core-protos/Cargo.toml +5 -2
- package/sdk-core/sdk-core-protos/build.rs +36 -2
- package/sdk-core/sdk-core-protos/src/history_builder.rs +138 -106
- package/sdk-core/sdk-core-protos/src/history_info.rs +10 -1
- package/sdk-core/sdk-core-protos/src/lib.rs +272 -87
- package/sdk-core/sdk-core-protos/src/task_token.rs +12 -2
- package/sdk-core/test-utils/Cargo.toml +3 -1
- package/sdk-core/test-utils/src/canned_histories.rs +106 -296
- package/sdk-core/test-utils/src/histfetch.rs +1 -1
- package/sdk-core/test-utils/src/lib.rs +82 -23
- package/sdk-core/test-utils/src/wf_input_saver.rs +50 -0
- package/sdk-core/test-utils/src/workflows.rs +29 -0
- package/sdk-core/tests/fuzzy_workflow.rs +130 -0
- package/sdk-core/tests/{load_tests.rs → heavy_tests.rs} +125 -51
- package/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +25 -3
- package/sdk-core/tests/integ_tests/heartbeat_tests.rs +10 -5
- package/sdk-core/tests/integ_tests/metrics_tests.rs +218 -16
- package/sdk-core/tests/integ_tests/polling_tests.rs +4 -47
- package/sdk-core/tests/integ_tests/queries_tests.rs +5 -128
- package/sdk-core/tests/integ_tests/visibility_tests.rs +83 -25
- package/sdk-core/tests/integ_tests/workflow_tests/activities.rs +161 -72
- package/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +1 -0
- package/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +6 -13
- package/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +80 -3
- package/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +6 -2
- package/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +3 -10
- package/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +94 -200
- package/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +2 -4
- package/sdk-core/tests/integ_tests/workflow_tests/patches.rs +34 -28
- package/sdk-core/tests/integ_tests/workflow_tests/replay.rs +76 -7
- package/sdk-core/tests/integ_tests/workflow_tests/resets.rs +1 -0
- package/sdk-core/tests/integ_tests/workflow_tests/signals.rs +18 -14
- package/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +6 -20
- package/sdk-core/tests/integ_tests/workflow_tests/timers.rs +10 -21
- package/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +7 -8
- package/sdk-core/tests/integ_tests/workflow_tests.rs +13 -14
- package/sdk-core/tests/main.rs +3 -13
- package/sdk-core/tests/runner.rs +75 -36
- package/sdk-core/tests/wf_input_replay.rs +32 -0
- package/src/conversions.rs +14 -8
- package/src/runtime.rs +9 -8
- package/ts/index.ts +8 -6
- package/sdk-core/bridge-ffi/Cargo.toml +0 -24
- package/sdk-core/bridge-ffi/LICENSE.txt +0 -23
- package/sdk-core/bridge-ffi/build.rs +0 -25
- package/sdk-core/bridge-ffi/include/sdk-core-bridge.h +0 -224
- package/sdk-core/bridge-ffi/src/lib.rs +0 -746
- package/sdk-core/bridge-ffi/src/wrappers.rs +0 -221
- package/sdk-core/protos/local/temporal/sdk/core/bridge/bridge.proto +0 -210
- package/sdk-core/sdk/src/conversions.rs +0 -8
package/lib/index.d.ts
CHANGED
|
@@ -341,10 +341,10 @@ export interface TimeSkippingServerConfig {
|
|
|
341
341
|
extraArgs?: string[];
|
|
342
342
|
}
|
|
343
343
|
/**
|
|
344
|
-
* Configuration for
|
|
344
|
+
* Configuration for the Temporal CLI dev server.
|
|
345
345
|
*/
|
|
346
|
-
export interface
|
|
347
|
-
type: '
|
|
346
|
+
export interface DevServerConfig {
|
|
347
|
+
type: 'dev-server';
|
|
348
348
|
executable?: EphemeralServerExecutable;
|
|
349
349
|
/**
|
|
350
350
|
* Namespace to use - created at startup.
|
|
@@ -359,11 +359,13 @@ export interface TemporaliteConfig {
|
|
|
359
359
|
*/
|
|
360
360
|
ip?: string;
|
|
361
361
|
/**
|
|
362
|
-
* Sqlite DB filename if persisting or non-persistent if none.
|
|
362
|
+
* Sqlite DB filename if persisting or non-persistent if none (default).
|
|
363
363
|
*/
|
|
364
364
|
db_filename?: string;
|
|
365
365
|
/**
|
|
366
366
|
* Whether to enable the UI.
|
|
367
|
+
*
|
|
368
|
+
* @default false
|
|
367
369
|
*/
|
|
368
370
|
ui?: boolean;
|
|
369
371
|
/**
|
|
@@ -386,9 +388,9 @@ export interface TemporaliteConfig {
|
|
|
386
388
|
/**
|
|
387
389
|
* Configuration for spawning an ephemeral Temporal server.
|
|
388
390
|
*
|
|
389
|
-
* Both the time-skipping test server and
|
|
391
|
+
* Both the time-skipping test server and Temporal CLI dev server are supported.
|
|
390
392
|
*/
|
|
391
|
-
export declare type EphemeralServerConfig = TimeSkippingServerConfig |
|
|
393
|
+
export declare type EphemeralServerConfig = TimeSkippingServerConfig | DevServerConfig;
|
|
392
394
|
export interface Worker {
|
|
393
395
|
type: 'Worker';
|
|
394
396
|
}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":";;;AAmgBA,mCAA0E;AAAjE,uGAAA,aAAa,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,yGAAA,eAAe,OAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@temporalio/core-bridge",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Temporal.io SDK Core<>Node bridge",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"author": "Temporal Technologies Inc. <sdk@temporal.io>",
|
|
23
23
|
"license": "MIT",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@opentelemetry/api": "^1.
|
|
26
|
-
"@temporalio/common": "
|
|
25
|
+
"@opentelemetry/api": "^1.3.0",
|
|
26
|
+
"@temporalio/common": "1.7.0",
|
|
27
27
|
"arg": "^5.0.2",
|
|
28
28
|
"cargo-cp-artifact": "^0.1.6",
|
|
29
29
|
"which": "^2.0.2"
|
|
@@ -31,6 +31,11 @@
|
|
|
31
31
|
"bugs": {
|
|
32
32
|
"url": "https://github.com/temporalio/sdk-typescript/issues"
|
|
33
33
|
},
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "git+https://github.com/temporalio/sdk-typescript.git",
|
|
37
|
+
"directory": "packages/core-bridge"
|
|
38
|
+
},
|
|
34
39
|
"homepage": "https://github.com/temporalio/sdk-typescript/tree/main/packages/core-bridge",
|
|
35
40
|
"files": [
|
|
36
41
|
"scripts",
|
|
@@ -48,5 +53,5 @@
|
|
|
48
53
|
"publishConfig": {
|
|
49
54
|
"access": "public"
|
|
50
55
|
},
|
|
51
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "2b32bac62f879b35238b487d3aaed093a1e449a7"
|
|
52
57
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
FROM rust:1.
|
|
1
|
+
FROM rust:1.68
|
|
2
2
|
|
|
3
3
|
RUN rustup component add rustfmt && \
|
|
4
4
|
rustup component add clippy
|
|
5
5
|
|
|
6
|
-
RUN cargo install cargo-tarpaulin
|
|
6
|
+
# RUN cargo install cargo-tarpaulin
|
|
7
7
|
RUN apt-get update && apt-get install -y protobuf-compiler
|
|
8
8
|
|
|
9
9
|
WORKDIR /sdk-core
|
|
@@ -17,7 +17,7 @@ steps:
|
|
|
17
17
|
agents:
|
|
18
18
|
queue: "default"
|
|
19
19
|
docker: "*"
|
|
20
|
-
command: "cargo
|
|
20
|
+
command: "cargo lint"
|
|
21
21
|
timeout_in_minutes: 15
|
|
22
22
|
plugins:
|
|
23
23
|
- docker-compose#v3.0.0:
|
|
@@ -25,13 +25,11 @@ steps:
|
|
|
25
25
|
config:
|
|
26
26
|
- .buildkite/docker/docker-compose.yaml
|
|
27
27
|
- .buildkite/docker/docker-compose-ci.yaml
|
|
28
|
-
env:
|
|
29
|
-
- TEMPORAL_SDK_CORE_BRIDGE_FFI_DISABLE_HEADER_CHANGE=true
|
|
30
28
|
- label: "test"
|
|
31
29
|
agents:
|
|
32
30
|
queue: "default"
|
|
33
31
|
docker: "*"
|
|
34
|
-
command: "cargo
|
|
32
|
+
command: "cargo test -- --include-ignored"
|
|
35
33
|
artifact_paths:
|
|
36
34
|
- "tarpaulin-report.html"
|
|
37
35
|
- "machine_coverage/*"
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
[alias]
|
|
2
|
-
integ-test = ["run", "--package", "temporal-sdk-core", "--example", "integ_runner"]
|
|
3
|
-
|
|
2
|
+
integ-test = ["run", "--package", "temporal-sdk-core", "--example", "integ_runner", "--"]
|
|
3
|
+
wf-input-replay = ["run", "--package", "temporal-sdk-core", "--features", "save_wf_inputs",
|
|
4
|
+
"--example", "wf_input_replay", "--"]
|
|
5
|
+
lint = ["clippy", "--workspace", "--examples", "--all-features",
|
|
6
|
+
"--test", "integ_tests", "--test", "heavy_tests", "--", "--D", "warnings"]
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: Heavy Tests
|
|
2
|
+
|
|
3
|
+
on: # rebuild any PRs and main branch changes
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- master
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build-and-test:
|
|
11
|
+
timeout-minutes: 20
|
|
12
|
+
runs-on: ubuntu-latest-16-cores
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v2
|
|
15
|
+
with:
|
|
16
|
+
submodules: recursive
|
|
17
|
+
- uses: actions-rs/toolchain@v1
|
|
18
|
+
with:
|
|
19
|
+
toolchain: stable
|
|
20
|
+
- name: Install protoc
|
|
21
|
+
uses: arduino/setup-protoc@v1
|
|
22
|
+
with:
|
|
23
|
+
version: '3.x'
|
|
24
|
+
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
25
|
+
|
|
26
|
+
- uses: actions-rs/cargo@v1
|
|
27
|
+
with:
|
|
28
|
+
command: integ-test
|
|
29
|
+
args: -c "--release" -c "--all-features" -t heavy_tests -- --test-threads 1
|
package/sdk-core/Cargo.toml
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
[workspace]
|
|
2
|
-
members = ["
|
|
2
|
+
members = ["core", "client", "core-api", "fsm", "test-utils", "sdk-core-protos", "sdk"]
|
package/sdk-core/README.md
CHANGED
|
@@ -1,23 +1,29 @@
|
|
|
1
1
|
[](https://buildkite.com/temporal/core-sdk?branch=master)
|
|
2
2
|
|
|
3
|
-
Core SDK that can be used as a base for
|
|
3
|
+
Core SDK that can be used as a base for other Temporal SDKs. It is currently used as the base of:
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
- [TypeScript SDK](https://github.com/temporalio/sdk-typescript/)
|
|
6
|
+
- [Python SDK](https://github.com/temporalio/sdk-python/)
|
|
7
|
+
- [.NET SDK](https://github.com/temporalio/sdk-dotnet/)
|
|
8
|
+
- [Ruby SDK](https://github.com/temporalio/sdk-ruby/)
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
For the reasoning behind the Core SDK, see:
|
|
8
11
|
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
- [Why Rust powers Temporal’s new Core SDK](https://temporal.io/blog/why-rust-powers-core-sdk).
|
|
13
|
+
|
|
14
|
+
See the [Architecture](ARCHITECTURE.md) doc for some high-level information about how Core works
|
|
15
|
+
and how language layers interact with it.
|
|
11
16
|
|
|
12
17
|
# Development
|
|
13
18
|
|
|
19
|
+
You will need the `protoc` protobuf compiler installed to build Core.
|
|
20
|
+
|
|
14
21
|
This repo is composed of multiple crates:
|
|
15
22
|
* temporal-sdk-core-protos `./sdk-core-protos` - Holds the generated proto code and extensions
|
|
16
23
|
* temporal-client `./client` - Defines client(s) for interacting with the Temporal gRPC service
|
|
17
24
|
* temporal-sdk-core-api `./core-api` - Defines the API surface exposed by Core
|
|
18
25
|
* temporal-sdk-core `./core` - The Core implementation
|
|
19
26
|
* temporal-sdk `./sdk` - A (currently prototype) Rust SDK built on top of Core. Used for testing.
|
|
20
|
-
* temporal-sdk-core-bridge-ffi `./bridge-ffi` - C API wrapper for Core
|
|
21
27
|
* rustfsm `./fsm` - Implements a procedural macro used by core for defining state machines
|
|
22
28
|
(contains subcrates). It is temporal agnostic.
|
|
23
29
|
|
|
@@ -25,7 +31,6 @@ Visualized (dev dependencies are in blue):
|
|
|
25
31
|
|
|
26
32
|

|
|
27
33
|
|
|
28
|
-
|
|
29
34
|
All the following commands are enforced for each pull request:
|
|
30
35
|
|
|
31
36
|
## Building and testing
|
|
@@ -52,9 +57,7 @@ it for a test, insert the below snippet at the start of the test. By default, tr
|
|
|
52
57
|
to stdout in a (reasonably) pretty manner.
|
|
53
58
|
|
|
54
59
|
```rust
|
|
55
|
-
crate::telemetry::
|
|
56
|
-
let s = info_span!("Test start");
|
|
57
|
-
let _enter = s.enter();
|
|
60
|
+
crate::telemetry::test_telem_console();
|
|
58
61
|
```
|
|
59
62
|
|
|
60
63
|
The passed in options to initialization can be customized to export to an OTel collector, etc.
|
|
@@ -105,3 +108,10 @@ Any error which is returned from a public interface should be well-typed, and we
|
|
|
105
108
|
Errors returned from things only used in testing are free to use
|
|
106
109
|
[anyhow](https://github.com/dtolnay/anyhow) for less verbosity.
|
|
107
110
|
|
|
111
|
+
|
|
112
|
+
# The Rust "SDK"
|
|
113
|
+
This repo contains a *prototype* Rust sdk in the `sdk/` directory. This SDK should be considered
|
|
114
|
+
pre-alpha in terms of its API surface. Since it's still using Core underneath, it is generally
|
|
115
|
+
functional. We do not currently have any firm plans to productionize this SDK. If you want to write
|
|
116
|
+
workflows and activities in Rust, feel free to use it - but be aware that the API may change at any
|
|
117
|
+
time without warning and we do not provide any support guarantees.
|
|
@@ -13,14 +13,17 @@ mod retry;
|
|
|
13
13
|
mod workflow_handle;
|
|
14
14
|
|
|
15
15
|
pub use crate::retry::{CallType, RetryClient, RETRYABLE_ERROR_CODES};
|
|
16
|
+
pub use metrics::ClientMetricProvider;
|
|
16
17
|
pub use raw::{HealthService, OperatorService, TestService, WorkflowService};
|
|
17
18
|
pub use temporal_sdk_core_protos::temporal::api::{
|
|
19
|
+
enums::v1::ArchivalState,
|
|
18
20
|
filter::v1::{StartTimeFilter, StatusFilter, WorkflowExecutionFilter, WorkflowTypeFilter},
|
|
19
21
|
workflowservice::v1::{
|
|
20
22
|
list_closed_workflow_executions_request::Filters as ListClosedFilters,
|
|
21
23
|
list_open_workflow_executions_request::Filters as ListOpenFilters,
|
|
22
24
|
},
|
|
23
25
|
};
|
|
26
|
+
pub use tonic;
|
|
24
27
|
pub use workflow_handle::{WorkflowExecutionInfo, WorkflowExecutionResult};
|
|
25
28
|
|
|
26
29
|
use crate::{
|
|
@@ -32,7 +35,6 @@ use crate::{
|
|
|
32
35
|
use backoff::{exponential, ExponentialBackoff, SystemClock};
|
|
33
36
|
use http::uri::InvalidUri;
|
|
34
37
|
use once_cell::sync::OnceCell;
|
|
35
|
-
use opentelemetry::metrics::Meter;
|
|
36
38
|
use parking_lot::RwLock;
|
|
37
39
|
use std::{
|
|
38
40
|
collections::HashMap,
|
|
@@ -51,6 +53,7 @@ use temporal_sdk_core_protos::{
|
|
|
51
53
|
failure::v1::Failure,
|
|
52
54
|
operatorservice::v1::operator_service_client::OperatorServiceClient,
|
|
53
55
|
query::v1::WorkflowQuery,
|
|
56
|
+
replication::v1::ClusterReplicationConfig,
|
|
54
57
|
taskqueue::v1::TaskQueue,
|
|
55
58
|
testservice::v1::test_service_client::TestServiceClient,
|
|
56
59
|
workflowservice::v1::{workflow_service_client::WorkflowServiceClient, *},
|
|
@@ -283,7 +286,7 @@ impl ClientOptions {
|
|
|
283
286
|
pub async fn connect(
|
|
284
287
|
&self,
|
|
285
288
|
namespace: impl Into<String>,
|
|
286
|
-
metrics_meter: Option<&
|
|
289
|
+
metrics_meter: Option<&dyn ClientMetricProvider>,
|
|
287
290
|
headers: Option<Arc<RwLock<HashMap<String, String>>>>,
|
|
288
291
|
) -> Result<RetryClient<Client>, ClientInitError> {
|
|
289
292
|
let client = self
|
|
@@ -301,7 +304,7 @@ impl ClientOptions {
|
|
|
301
304
|
/// See [RetryClient] for more
|
|
302
305
|
pub async fn connect_no_namespace(
|
|
303
306
|
&self,
|
|
304
|
-
metrics_meter: Option<&
|
|
307
|
+
metrics_meter: Option<&dyn ClientMetricProvider>,
|
|
305
308
|
headers: Option<Arc<RwLock<HashMap<String, String>>>>,
|
|
306
309
|
) -> Result<RetryClient<ConfiguredClient<TemporalServiceClientWithMetrics>>, ClientInitError>
|
|
307
310
|
{
|
|
@@ -592,6 +595,133 @@ impl Namespace {
|
|
|
592
595
|
}
|
|
593
596
|
}
|
|
594
597
|
|
|
598
|
+
/// Default workflow execution retention for a Namespace is 3 days
|
|
599
|
+
pub const DEFAULT_WORKFLOW_EXECUTION_RETENTION_PERIOD: Duration =
|
|
600
|
+
Duration::from_secs(60 * 60 * 24 * 3);
|
|
601
|
+
|
|
602
|
+
/// Helper struct for `register_namespace`.
|
|
603
|
+
#[derive(Clone, derive_builder::Builder)]
|
|
604
|
+
pub struct RegisterNamespaceOptions {
|
|
605
|
+
/// Name (required)
|
|
606
|
+
#[builder(setter(into))]
|
|
607
|
+
pub namespace: String,
|
|
608
|
+
/// Description (required)
|
|
609
|
+
#[builder(setter(into))]
|
|
610
|
+
pub description: String,
|
|
611
|
+
/// Owner's email
|
|
612
|
+
#[builder(setter(into), default)]
|
|
613
|
+
pub owner_email: String,
|
|
614
|
+
/// Workflow execution retention period
|
|
615
|
+
#[builder(default = "DEFAULT_WORKFLOW_EXECUTION_RETENTION_PERIOD")]
|
|
616
|
+
pub workflow_execution_retention_period: Duration,
|
|
617
|
+
/// Cluster settings
|
|
618
|
+
#[builder(setter(strip_option, custom), default)]
|
|
619
|
+
pub clusters: Vec<ClusterReplicationConfig>,
|
|
620
|
+
/// Active cluster name
|
|
621
|
+
#[builder(setter(into), default)]
|
|
622
|
+
pub active_cluster_name: String,
|
|
623
|
+
/// Custom Data
|
|
624
|
+
#[builder(default)]
|
|
625
|
+
pub data: HashMap<String, String>,
|
|
626
|
+
/// Security Token
|
|
627
|
+
#[builder(setter(into), default)]
|
|
628
|
+
pub security_token: String,
|
|
629
|
+
/// Global namespace
|
|
630
|
+
#[builder(default)]
|
|
631
|
+
pub is_global_namespace: bool,
|
|
632
|
+
/// History Archival setting
|
|
633
|
+
#[builder(setter(into), default = "ArchivalState::Unspecified")]
|
|
634
|
+
pub history_archival_state: ArchivalState,
|
|
635
|
+
/// History Archival uri
|
|
636
|
+
#[builder(setter(into), default)]
|
|
637
|
+
pub history_archival_uri: String,
|
|
638
|
+
/// Visibility Archival setting
|
|
639
|
+
#[builder(setter(into), default = "ArchivalState::Unspecified")]
|
|
640
|
+
pub visibility_archival_state: ArchivalState,
|
|
641
|
+
/// Visibility Archival uri
|
|
642
|
+
#[builder(setter(into), default)]
|
|
643
|
+
pub visibility_archival_uri: String,
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
impl RegisterNamespaceOptions {
|
|
647
|
+
/// Builder convenience. Less `use` imports
|
|
648
|
+
pub fn builder() -> RegisterNamespaceOptionsBuilder {
|
|
649
|
+
Default::default()
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
impl From<RegisterNamespaceOptions> for RegisterNamespaceRequest {
|
|
654
|
+
fn from(val: RegisterNamespaceOptions) -> Self {
|
|
655
|
+
RegisterNamespaceRequest {
|
|
656
|
+
namespace: val.namespace,
|
|
657
|
+
description: val.description,
|
|
658
|
+
owner_email: val.owner_email,
|
|
659
|
+
workflow_execution_retention_period: val
|
|
660
|
+
.workflow_execution_retention_period
|
|
661
|
+
.try_into()
|
|
662
|
+
.ok(),
|
|
663
|
+
clusters: val.clusters,
|
|
664
|
+
active_cluster_name: val.active_cluster_name,
|
|
665
|
+
data: val.data,
|
|
666
|
+
security_token: val.security_token,
|
|
667
|
+
is_global_namespace: val.is_global_namespace,
|
|
668
|
+
history_archival_state: val.history_archival_state as i32,
|
|
669
|
+
history_archival_uri: val.history_archival_uri,
|
|
670
|
+
visibility_archival_state: val.visibility_archival_state as i32,
|
|
671
|
+
visibility_archival_uri: val.visibility_archival_uri,
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
impl RegisterNamespaceOptionsBuilder {
|
|
677
|
+
/// Custum builder function for convenience
|
|
678
|
+
/// Warning: setting cluster_names could blow away any previously set cluster configs
|
|
679
|
+
pub fn cluster_names(&mut self, clusters: Vec<String>) {
|
|
680
|
+
self.clusters = Some(
|
|
681
|
+
clusters
|
|
682
|
+
.into_iter()
|
|
683
|
+
.map(|s| ClusterReplicationConfig { cluster_name: s })
|
|
684
|
+
.collect(),
|
|
685
|
+
);
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
/// Helper struct for `signal_with_start_workflow_execution`.
|
|
690
|
+
#[derive(Clone, derive_builder::Builder)]
|
|
691
|
+
pub struct SignalWithStartOptions {
|
|
692
|
+
/// Input payload for the workflow run
|
|
693
|
+
#[builder(setter(strip_option), default)]
|
|
694
|
+
pub input: Option<Payloads>,
|
|
695
|
+
/// Task Queue to target (required)
|
|
696
|
+
#[builder(setter(into))]
|
|
697
|
+
pub task_queue: String,
|
|
698
|
+
/// Workflow id for the workflow run
|
|
699
|
+
#[builder(setter(into))]
|
|
700
|
+
pub workflow_id: String,
|
|
701
|
+
/// Workflow type for the workflow run
|
|
702
|
+
#[builder(setter(into))]
|
|
703
|
+
pub workflow_type: String,
|
|
704
|
+
#[builder(setter(strip_option), default)]
|
|
705
|
+
/// Request id for idempotency/deduplication
|
|
706
|
+
pub request_id: Option<String>,
|
|
707
|
+
/// The signal name to send (required)
|
|
708
|
+
#[builder(setter(into))]
|
|
709
|
+
pub signal_name: String,
|
|
710
|
+
/// Payloads for the signal
|
|
711
|
+
#[builder(default)]
|
|
712
|
+
pub signal_input: Option<Payloads>,
|
|
713
|
+
#[builder(setter(strip_option), default)]
|
|
714
|
+
/// Headers for the signal
|
|
715
|
+
pub signal_header: Option<Header>,
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
impl SignalWithStartOptions {
|
|
719
|
+
/// Builder convenience. Less `use` imports
|
|
720
|
+
pub fn builder() -> SignalWithStartOptionsBuilder {
|
|
721
|
+
Default::default()
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
|
|
595
725
|
/// This trait provides higher-level friendlier interaction with the server.
|
|
596
726
|
/// See the [WorkflowService] trait for a lower-level client.
|
|
597
727
|
#[cfg_attr(test, mockall::automock)]
|
|
@@ -677,15 +807,8 @@ pub trait WorkflowClientTrait {
|
|
|
677
807
|
#[allow(clippy::too_many_arguments)]
|
|
678
808
|
async fn signal_with_start_workflow_execution(
|
|
679
809
|
&self,
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
workflow_id: String,
|
|
683
|
-
workflow_type: String,
|
|
684
|
-
request_id: Option<String>,
|
|
685
|
-
options: WorkflowOptions,
|
|
686
|
-
signal_name: String,
|
|
687
|
-
signal_input: Option<Payloads>,
|
|
688
|
-
signal_header: Option<Header>,
|
|
810
|
+
options: SignalWithStartOptions,
|
|
811
|
+
workflow_options: WorkflowOptions,
|
|
689
812
|
) -> Result<SignalWithStartWorkflowExecutionResponse>;
|
|
690
813
|
|
|
691
814
|
/// Request a query of a certain workflow instance
|
|
@@ -734,13 +857,19 @@ pub trait WorkflowClientTrait {
|
|
|
734
857
|
run_id: Option<String>,
|
|
735
858
|
) -> Result<TerminateWorkflowExecutionResponse>;
|
|
736
859
|
|
|
860
|
+
/// Register a new namespace
|
|
861
|
+
async fn register_namespace(
|
|
862
|
+
&self,
|
|
863
|
+
options: RegisterNamespaceOptions,
|
|
864
|
+
) -> Result<RegisterNamespaceResponse>;
|
|
865
|
+
|
|
737
866
|
/// Lists all available namespaces
|
|
738
867
|
async fn list_namespaces(&self) -> Result<ListNamespacesResponse>;
|
|
739
868
|
|
|
740
869
|
/// Query namespace details
|
|
741
870
|
async fn describe_namespace(&self, namespace: Namespace) -> Result<DescribeNamespaceResponse>;
|
|
742
871
|
|
|
743
|
-
/// List open
|
|
872
|
+
/// List open workflow executions with Standard Visibility filtering
|
|
744
873
|
async fn list_open_workflow_executions(
|
|
745
874
|
&self,
|
|
746
875
|
max_page_size: i32,
|
|
@@ -749,7 +878,7 @@ pub trait WorkflowClientTrait {
|
|
|
749
878
|
filters: Option<ListOpenFilters>,
|
|
750
879
|
) -> Result<ListOpenWorkflowExecutionsResponse>;
|
|
751
880
|
|
|
752
|
-
/// List closed
|
|
881
|
+
/// List closed workflow executions Standard Visibility filtering
|
|
753
882
|
async fn list_closed_workflow_executions(
|
|
754
883
|
&self,
|
|
755
884
|
max_page_size: i32,
|
|
@@ -758,14 +887,25 @@ pub trait WorkflowClientTrait {
|
|
|
758
887
|
filters: Option<ListClosedFilters>,
|
|
759
888
|
) -> Result<ListClosedWorkflowExecutionsResponse>;
|
|
760
889
|
|
|
761
|
-
/// List
|
|
890
|
+
/// List workflow executions with Advanced Visibility filtering
|
|
762
891
|
async fn list_workflow_executions(
|
|
763
892
|
&self,
|
|
764
|
-
|
|
893
|
+
page_size: i32,
|
|
765
894
|
next_page_token: Vec<u8>,
|
|
766
895
|
query: String,
|
|
767
896
|
) -> Result<ListWorkflowExecutionsResponse>;
|
|
768
897
|
|
|
898
|
+
/// List archived workflow executions
|
|
899
|
+
async fn list_archived_workflow_executions(
|
|
900
|
+
&self,
|
|
901
|
+
page_size: i32,
|
|
902
|
+
next_page_token: Vec<u8>,
|
|
903
|
+
query: String,
|
|
904
|
+
) -> Result<ListArchivedWorkflowExecutionsResponse>;
|
|
905
|
+
|
|
906
|
+
/// Get Cluster Search Attributes
|
|
907
|
+
async fn get_search_attributes(&self) -> Result<GetSearchAttributesResponse>;
|
|
908
|
+
|
|
769
909
|
/// Returns options that were used to initialize the client
|
|
770
910
|
fn get_options(&self) -> &ClientOptions;
|
|
771
911
|
|
|
@@ -937,6 +1077,7 @@ impl WorkflowClientTrait for Client {
|
|
|
937
1077
|
identity: self.inner.options.identity.clone(),
|
|
938
1078
|
binary_checksum: self.bound_worker_build_id.clone().unwrap_or_default(),
|
|
939
1079
|
namespace: self.namespace.clone(),
|
|
1080
|
+
messages: vec![],
|
|
940
1081
|
};
|
|
941
1082
|
Ok(self
|
|
942
1083
|
.wf_svc()
|
|
@@ -973,42 +1114,43 @@ impl WorkflowClientTrait for Client {
|
|
|
973
1114
|
|
|
974
1115
|
async fn signal_with_start_workflow_execution(
|
|
975
1116
|
&self,
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
workflow_id: String,
|
|
979
|
-
workflow_type: String,
|
|
980
|
-
request_id: Option<String>,
|
|
981
|
-
options: WorkflowOptions,
|
|
982
|
-
signal_name: String,
|
|
983
|
-
signal_input: Option<Payloads>,
|
|
984
|
-
signal_header: Option<Header>,
|
|
1117
|
+
options: SignalWithStartOptions,
|
|
1118
|
+
workflow_options: WorkflowOptions,
|
|
985
1119
|
) -> Result<SignalWithStartWorkflowExecutionResponse> {
|
|
986
1120
|
Ok(self
|
|
987
1121
|
.wf_svc()
|
|
988
1122
|
.signal_with_start_workflow_execution(SignalWithStartWorkflowExecutionRequest {
|
|
989
1123
|
namespace: self.namespace.clone(),
|
|
990
|
-
workflow_id,
|
|
1124
|
+
workflow_id: options.workflow_id,
|
|
991
1125
|
workflow_type: Some(WorkflowType {
|
|
992
|
-
name: workflow_type,
|
|
1126
|
+
name: options.workflow_type,
|
|
993
1127
|
}),
|
|
994
1128
|
task_queue: Some(TaskQueue {
|
|
995
|
-
name: task_queue,
|
|
1129
|
+
name: options.task_queue,
|
|
996
1130
|
kind: TaskQueueKind::Normal as i32,
|
|
997
1131
|
}),
|
|
998
|
-
input,
|
|
999
|
-
signal_name,
|
|
1000
|
-
signal_input,
|
|
1132
|
+
input: options.input,
|
|
1133
|
+
signal_name: options.signal_name,
|
|
1134
|
+
signal_input: options.signal_input,
|
|
1001
1135
|
identity: self.inner.options.identity.clone(),
|
|
1002
|
-
request_id:
|
|
1003
|
-
|
|
1004
|
-
|
|
1136
|
+
request_id: options
|
|
1137
|
+
.request_id
|
|
1138
|
+
.unwrap_or_else(|| Uuid::new_v4().to_string()),
|
|
1139
|
+
workflow_id_reuse_policy: workflow_options.id_reuse_policy as i32,
|
|
1140
|
+
workflow_execution_timeout: workflow_options
|
|
1005
1141
|
.execution_timeout
|
|
1006
1142
|
.and_then(|d| d.try_into().ok()),
|
|
1007
|
-
workflow_run_timeout:
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1143
|
+
workflow_run_timeout: workflow_options
|
|
1144
|
+
.execution_timeout
|
|
1145
|
+
.and_then(|d| d.try_into().ok()),
|
|
1146
|
+
workflow_task_timeout: workflow_options
|
|
1147
|
+
.task_timeout
|
|
1148
|
+
.and_then(|d| d.try_into().ok()),
|
|
1149
|
+
search_attributes: workflow_options
|
|
1150
|
+
.search_attributes
|
|
1151
|
+
.and_then(|d| d.try_into().ok()),
|
|
1152
|
+
cron_schedule: workflow_options.cron_schedule.unwrap_or_default(),
|
|
1153
|
+
header: options.signal_header,
|
|
1012
1154
|
..Default::default()
|
|
1013
1155
|
})
|
|
1014
1156
|
.await?
|
|
@@ -1140,6 +1282,14 @@ impl WorkflowClientTrait for Client {
|
|
|
1140
1282
|
.into_inner())
|
|
1141
1283
|
}
|
|
1142
1284
|
|
|
1285
|
+
async fn register_namespace(
|
|
1286
|
+
&self,
|
|
1287
|
+
options: RegisterNamespaceOptions,
|
|
1288
|
+
) -> Result<RegisterNamespaceResponse> {
|
|
1289
|
+
let req = Into::<RegisterNamespaceRequest>::into(options);
|
|
1290
|
+
Ok(self.wf_svc().register_namespace(req).await?.into_inner())
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1143
1293
|
async fn list_namespaces(&self) -> Result<ListNamespacesResponse> {
|
|
1144
1294
|
Ok(self
|
|
1145
1295
|
.wf_svc()
|
|
@@ -1214,6 +1364,32 @@ impl WorkflowClientTrait for Client {
|
|
|
1214
1364
|
.into_inner())
|
|
1215
1365
|
}
|
|
1216
1366
|
|
|
1367
|
+
async fn list_archived_workflow_executions(
|
|
1368
|
+
&self,
|
|
1369
|
+
page_size: i32,
|
|
1370
|
+
next_page_token: Vec<u8>,
|
|
1371
|
+
query: String,
|
|
1372
|
+
) -> Result<ListArchivedWorkflowExecutionsResponse> {
|
|
1373
|
+
Ok(self
|
|
1374
|
+
.wf_svc()
|
|
1375
|
+
.list_archived_workflow_executions(ListArchivedWorkflowExecutionsRequest {
|
|
1376
|
+
namespace: self.namespace.clone(),
|
|
1377
|
+
page_size,
|
|
1378
|
+
next_page_token,
|
|
1379
|
+
query,
|
|
1380
|
+
})
|
|
1381
|
+
.await?
|
|
1382
|
+
.into_inner())
|
|
1383
|
+
}
|
|
1384
|
+
|
|
1385
|
+
async fn get_search_attributes(&self) -> Result<GetSearchAttributesResponse> {
|
|
1386
|
+
Ok(self
|
|
1387
|
+
.wf_svc()
|
|
1388
|
+
.get_search_attributes(GetSearchAttributesRequest {})
|
|
1389
|
+
.await?
|
|
1390
|
+
.into_inner())
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1217
1393
|
fn get_options(&self) -> &ClientOptions {
|
|
1218
1394
|
&self.inner.options
|
|
1219
1395
|
}
|