@temporalio/core-bridge 1.8.5 → 1.9.0-rc.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 (196) hide show
  1. package/Cargo.lock +189 -152
  2. package/Cargo.toml +1 -0
  3. package/lib/index.d.ts +17 -44
  4. package/lib/index.js.map +1 -1
  5. package/package.json +3 -4
  6. package/releases/aarch64-apple-darwin/index.node +0 -0
  7. package/releases/aarch64-unknown-linux-gnu/index.node +0 -0
  8. package/releases/x86_64-apple-darwin/index.node +0 -0
  9. package/releases/x86_64-pc-windows-msvc/index.node +0 -0
  10. package/releases/x86_64-unknown-linux-gnu/index.node +0 -0
  11. package/sdk-core/.github/workflows/heavy.yml +4 -0
  12. package/sdk-core/.github/workflows/per-pr.yml +96 -0
  13. package/sdk-core/ARCHITECTURE.md +1 -1
  14. package/sdk-core/Cargo.toml +6 -0
  15. package/sdk-core/README.md +37 -21
  16. package/sdk-core/client/Cargo.toml +6 -3
  17. package/sdk-core/client/src/lib.rs +272 -138
  18. package/sdk-core/client/src/metrics.rs +68 -57
  19. package/sdk-core/client/src/raw.rs +191 -45
  20. package/sdk-core/client/src/retry.rs +20 -0
  21. package/sdk-core/client/src/worker_registry/mod.rs +264 -0
  22. package/sdk-core/client/src/workflow_handle/mod.rs +2 -1
  23. package/sdk-core/core/Cargo.toml +16 -18
  24. package/sdk-core/core/src/core_tests/child_workflows.rs +7 -7
  25. package/sdk-core/core/src/core_tests/mod.rs +1 -0
  26. package/sdk-core/core/src/core_tests/replay_flag.rs +29 -39
  27. package/sdk-core/core/src/core_tests/updates.rs +73 -0
  28. package/sdk-core/core/src/core_tests/workflow_tasks.rs +52 -1
  29. package/sdk-core/core/src/ephemeral_server/mod.rs +34 -11
  30. package/sdk-core/core/src/internal_flags.rs +7 -1
  31. package/sdk-core/core/src/lib.rs +19 -36
  32. package/sdk-core/core/src/protosext/mod.rs +11 -3
  33. package/sdk-core/core/src/protosext/protocol_messages.rs +102 -0
  34. package/sdk-core/core/src/replay/mod.rs +100 -48
  35. package/sdk-core/core/src/telemetry/log_export.rs +161 -28
  36. package/sdk-core/core/src/telemetry/metrics.rs +869 -248
  37. package/sdk-core/core/src/telemetry/mod.rs +135 -239
  38. package/sdk-core/core/src/telemetry/prometheus_server.rs +36 -31
  39. package/sdk-core/core/src/test_help/mod.rs +63 -4
  40. package/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +12 -2
  41. package/sdk-core/core/src/worker/activities.rs +276 -10
  42. package/sdk-core/core/src/worker/client/mocks.rs +18 -0
  43. package/sdk-core/core/src/worker/client.rs +16 -3
  44. package/sdk-core/core/src/worker/mod.rs +50 -19
  45. package/sdk-core/core/src/worker/slot_provider.rs +175 -0
  46. package/sdk-core/core/src/worker/workflow/driven_workflow.rs +27 -34
  47. package/sdk-core/core/src/worker/workflow/history_update.rs +4 -1
  48. package/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +36 -94
  49. package/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +34 -22
  50. package/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +50 -34
  51. package/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +106 -92
  52. package/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +22 -21
  53. package/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +386 -499
  54. package/sdk-core/core/src/worker/workflow/machines/mod.rs +12 -2
  55. package/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +33 -26
  56. package/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +198 -215
  57. package/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +66 -62
  58. package/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +88 -119
  59. package/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +3 -1
  60. package/sdk-core/core/src/worker/workflow/machines/update_state_machine.rs +411 -0
  61. package/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +26 -25
  62. package/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +302 -85
  63. package/sdk-core/core/src/worker/workflow/managed_run.rs +179 -132
  64. package/sdk-core/core/src/worker/workflow/mod.rs +121 -46
  65. package/sdk-core/core/src/worker/workflow/run_cache.rs +8 -12
  66. package/sdk-core/core/src/worker/workflow/workflow_stream.rs +45 -38
  67. package/sdk-core/core-api/Cargo.toml +7 -6
  68. package/sdk-core/core-api/src/lib.rs +4 -12
  69. package/sdk-core/core-api/src/telemetry/metrics.rs +334 -0
  70. package/sdk-core/core-api/src/telemetry.rs +53 -42
  71. package/sdk-core/core-api/src/worker.rs +7 -0
  72. package/sdk-core/{.buildkite/docker → docker}/docker-compose.yaml +1 -1
  73. package/sdk-core/etc/dynamic-config.yaml +11 -1
  74. package/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +1 -1
  75. package/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +1 -3
  76. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +2 -2
  77. package/sdk-core/sdk/Cargo.toml +1 -1
  78. package/sdk-core/sdk/src/lib.rs +85 -7
  79. package/sdk-core/sdk/src/workflow_context/options.rs +4 -0
  80. package/sdk-core/sdk/src/workflow_context.rs +43 -15
  81. package/sdk-core/sdk/src/workflow_future.rs +334 -204
  82. package/sdk-core/sdk-core-protos/Cargo.toml +2 -2
  83. package/sdk-core/sdk-core-protos/build.rs +14 -14
  84. package/sdk-core/sdk-core-protos/protos/api_upstream/.buildkite/Dockerfile +2 -0
  85. package/sdk-core/sdk-core-protos/protos/api_upstream/Makefile +99 -0
  86. package/sdk-core/sdk-core-protos/protos/api_upstream/api-linter.yaml +56 -0
  87. package/sdk-core/sdk-core-protos/protos/api_upstream/buf.gen.yaml +20 -0
  88. package/sdk-core/sdk-core-protos/protos/api_upstream/buf.lock +11 -0
  89. package/sdk-core/sdk-core-protos/protos/api_upstream/buf.yaml +18 -0
  90. package/sdk-core/sdk-core-protos/protos/api_upstream/google/api/annotations.proto +31 -0
  91. package/sdk-core/sdk-core-protos/protos/api_upstream/google/api/http.proto +379 -0
  92. package/sdk-core/sdk-core-protos/protos/api_upstream/google/protobuf/any.proto +162 -0
  93. package/sdk-core/sdk-core-protos/protos/api_upstream/google/protobuf/descriptor.proto +1212 -0
  94. package/sdk-core/sdk-core-protos/protos/api_upstream/google/protobuf/duration.proto +115 -0
  95. package/sdk-core/sdk-core-protos/protos/api_upstream/google/protobuf/empty.proto +51 -0
  96. package/sdk-core/sdk-core-protos/protos/api_upstream/google/protobuf/timestamp.proto +144 -0
  97. package/sdk-core/sdk-core-protos/protos/api_upstream/google/protobuf/wrappers.proto +123 -0
  98. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/batch/v1/message.proto +3 -5
  99. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/command/v1/message.proto +11 -13
  100. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/common/v1/message.proto +2 -4
  101. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/enums/v1/failed_cause.proto +2 -0
  102. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/enums/v1/reset.proto +1 -1
  103. package/sdk-core/{protos/api_upstream/build/tools.go → sdk-core-protos/protos/api_upstream/temporal/api/export/v1/message.proto} +22 -6
  104. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/filter/v1/message.proto +2 -4
  105. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/history/v1/message.proto +21 -23
  106. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/namespace/v1/message.proto +2 -4
  107. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/operatorservice/v1/request_response.proto +2 -0
  108. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/operatorservice/v1/service.proto +4 -0
  109. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/replication/v1/message.proto +1 -3
  110. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/schedule/v1/message.proto +36 -20
  111. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +13 -0
  112. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/taskqueue/v1/message.proto +2 -4
  113. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/update/v1/message.proto +1 -1
  114. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/version/v1/message.proto +2 -3
  115. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/workflow/v1/message.proto +18 -20
  116. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/workflowservice/v1/request_response.proto +84 -32
  117. package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/workflowservice/v1/service.proto +205 -47
  118. package/sdk-core/{protos → sdk-core-protos/protos}/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +57 -0
  119. package/sdk-core/{protos → sdk-core-protos/protos}/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +27 -0
  120. package/sdk-core/sdk-core-protos/src/history_builder.rs +67 -2
  121. package/sdk-core/sdk-core-protos/src/lib.rs +75 -2
  122. package/sdk-core/sdk-core-protos/src/utilities.rs +14 -0
  123. package/sdk-core/test-utils/Cargo.toml +5 -1
  124. package/sdk-core/test-utils/src/canned_histories.rs +3 -57
  125. package/sdk-core/test-utils/src/interceptors.rs +46 -0
  126. package/sdk-core/test-utils/src/lib.rs +106 -38
  127. package/sdk-core/tests/integ_tests/metrics_tests.rs +110 -15
  128. package/sdk-core/tests/integ_tests/queries_tests.rs +174 -3
  129. package/sdk-core/tests/integ_tests/update_tests.rs +908 -0
  130. package/sdk-core/tests/integ_tests/workflow_tests/activities.rs +44 -1
  131. package/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +1 -1
  132. package/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +1 -1
  133. package/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +4 -4
  134. package/sdk-core/tests/integ_tests/workflow_tests/eager.rs +61 -0
  135. package/sdk-core/tests/integ_tests/workflow_tests/replay.rs +27 -2
  136. package/sdk-core/tests/integ_tests/workflow_tests.rs +1 -0
  137. package/sdk-core/tests/main.rs +2 -1
  138. package/sdk-core/tests/runner.rs +15 -2
  139. package/src/conversions.rs +75 -89
  140. package/src/helpers.rs +74 -0
  141. package/src/runtime.rs +17 -6
  142. package/src/worker.rs +14 -61
  143. package/ts/index.ts +21 -52
  144. package/sdk-core/.buildkite/docker/Dockerfile +0 -9
  145. package/sdk-core/.buildkite/docker/build.sh +0 -5
  146. package/sdk-core/.buildkite/docker/docker-compose-ci.yaml +0 -27
  147. package/sdk-core/.buildkite/pipeline.yml +0 -57
  148. package/sdk-core/.github/workflows/semgrep.yml +0 -25
  149. package/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
  150. package/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -215
  151. package/sdk-core/protos/api_upstream/.buildkite/Dockerfile +0 -2
  152. package/sdk-core/protos/api_upstream/Makefile +0 -80
  153. package/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
  154. package/sdk-core/protos/api_upstream/buf.yaml +0 -9
  155. package/sdk-core/protos/api_upstream/build/go.mod +0 -7
  156. package/sdk-core/protos/api_upstream/build/go.sum +0 -5
  157. package/sdk-core/protos/api_upstream/go.mod +0 -6
  158. package/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
  159. /package/sdk-core/{.buildkite/docker → docker}/docker-compose-telem.yaml +0 -0
  160. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/.buildkite/docker-compose.yml +0 -0
  161. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/.buildkite/pipeline.yml +0 -0
  162. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/.github/CODEOWNERS +0 -0
  163. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  164. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/.github/workflows/publish-docs.yml +0 -0
  165. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/.github/workflows/trigger-api-go-update.yml +0 -0
  166. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/LICENSE +0 -0
  167. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/README.md +0 -0
  168. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -0
  169. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/enums/v1/command_type.proto +0 -0
  170. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/enums/v1/common.proto +0 -0
  171. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/enums/v1/event_type.proto +0 -0
  172. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/enums/v1/namespace.proto +0 -0
  173. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/enums/v1/query.proto +0 -0
  174. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/enums/v1/schedule.proto +0 -0
  175. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -0
  176. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/enums/v1/update.proto +0 -0
  177. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/enums/v1/workflow.proto +0 -0
  178. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/errordetails/v1/message.proto +0 -0
  179. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/failure/v1/message.proto +0 -0
  180. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/protocol/v1/message.proto +0 -0
  181. /package/sdk-core/{protos → sdk-core-protos/protos}/api_upstream/temporal/api/query/v1/message.proto +0 -0
  182. /package/sdk-core/{protos → sdk-core-protos/protos}/google/rpc/status.proto +0 -0
  183. /package/sdk-core/{protos → sdk-core-protos/protos}/grpc/health/v1/health.proto +0 -0
  184. /package/sdk-core/{protos → sdk-core-protos/protos}/local/temporal/sdk/core/activity_result/activity_result.proto +0 -0
  185. /package/sdk-core/{protos → sdk-core-protos/protos}/local/temporal/sdk/core/activity_task/activity_task.proto +0 -0
  186. /package/sdk-core/{protos → sdk-core-protos/protos}/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -0
  187. /package/sdk-core/{protos → sdk-core-protos/protos}/local/temporal/sdk/core/common/common.proto +0 -0
  188. /package/sdk-core/{protos → sdk-core-protos/protos}/local/temporal/sdk/core/core_interface.proto +0 -0
  189. /package/sdk-core/{protos → sdk-core-protos/protos}/local/temporal/sdk/core/external_data/external_data.proto +0 -0
  190. /package/sdk-core/{protos → sdk-core-protos/protos}/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -0
  191. /package/sdk-core/{protos → sdk-core-protos/protos}/testsrv_upstream/Makefile +0 -0
  192. /package/sdk-core/{protos → sdk-core-protos/protos}/testsrv_upstream/api-linter.yaml +0 -0
  193. /package/sdk-core/{protos → sdk-core-protos/protos}/testsrv_upstream/buf.yaml +0 -0
  194. /package/sdk-core/{protos/api_upstream → sdk-core-protos/protos/testsrv_upstream}/dependencies/gogoproto/gogo.proto +0 -0
  195. /package/sdk-core/{protos → sdk-core-protos/protos}/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -0
  196. /package/sdk-core/{protos → sdk-core-protos/protos}/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -0
@@ -1,215 +0,0 @@
1
- use super::*;
2
- use crate::{
3
- replay::TestHistoryBuilder,
4
- test_help::TEST_Q,
5
- worker::{
6
- client::mocks::DEFAULT_TEST_CAPABILITIES,
7
- workflow::{
8
- history_update::tests::TestHBExt, machines::WorkflowMachines, WFCommand,
9
- WorkflowFetcher,
10
- },
11
- LocalActRequest, LocalActivityResolution,
12
- },
13
- };
14
- use crossbeam::channel::bounded;
15
- use std::{convert::TryInto, time::Duration};
16
- use temporal_sdk::{WorkflowFunction, WorkflowResult};
17
- use temporal_sdk_core_protos::{
18
- coresdk::{
19
- activity_result::ActivityExecutionResult,
20
- workflow_activation::{create_evict_activation, remove_from_cache::EvictionReason},
21
- workflow_completion::{
22
- workflow_activation_completion::Status, WorkflowActivationCompletion,
23
- },
24
- },
25
- temporal::api::common::v1::Payload,
26
- };
27
- use tokio::{
28
- sync::mpsc::{unbounded_channel, UnboundedReceiver, UnboundedSender},
29
- task::JoinHandle,
30
- };
31
-
32
- pub(crate) struct WFFutureDriver {
33
- completions_q: crossbeam::channel::Receiver<WorkflowActivationCompletion>,
34
- }
35
-
36
- impl WorkflowFetcher for WFFutureDriver {
37
- fn fetch_workflow_iteration_output(&mut self) -> Vec<WFCommand> {
38
- if let Ok(completion) = self.completions_q.try_recv() {
39
- debug!("Managed wf completion: {}", completion);
40
- completion
41
- .status
42
- .map(|s| match s {
43
- Status::Successful(s) => s
44
- .commands
45
- .into_iter()
46
- .map(|cmd| cmd.try_into().unwrap())
47
- .collect(),
48
- Status::Failed(_) => panic!("Ahh failed"),
49
- })
50
- .unwrap_or_default()
51
- } else {
52
- // Sender went away so nothing to do here. End of wf/test.
53
- vec![]
54
- }
55
- }
56
- }
57
-
58
- #[must_use]
59
- pub struct ManagedWFFunc {
60
- mgr: WorkflowManager,
61
- activation_tx: UnboundedSender<WorkflowActivation>,
62
- completions_rx: UnboundedReceiver<WorkflowActivationCompletion>,
63
- completions_sync_tx: crossbeam::channel::Sender<WorkflowActivationCompletion>,
64
- future_handle: Option<JoinHandle<WorkflowResult<Payload>>>,
65
- was_shutdown: bool,
66
- }
67
-
68
- impl ManagedWFFunc {
69
- pub fn new(hist: TestHistoryBuilder, func: WorkflowFunction, args: Vec<Payload>) -> Self {
70
- Self::new_from_update(hist.as_history_update(), func, args)
71
- }
72
-
73
- pub fn new_from_update(
74
- hist: HistoryUpdate,
75
- func: WorkflowFunction,
76
- args: Vec<Payload>,
77
- ) -> Self {
78
- let (completions_tx, completions_rx) = unbounded_channel();
79
- let (wff, activations) = func.start_workflow(
80
- "testnamespace".to_string(),
81
- TEST_Q.to_string(),
82
- args,
83
- completions_tx,
84
- );
85
- let spawned = tokio::spawn(wff);
86
- let (completions_sync_tx, completions_sync_rx) = bounded(1);
87
- let driver = WFFutureDriver {
88
- completions_q: completions_sync_rx,
89
- };
90
- let state_machines = WorkflowMachines::new(
91
- RunBasics {
92
- namespace: "test_namespace".to_string(),
93
- workflow_id: "wfid".to_string(),
94
- workflow_type: "wftype".to_string(),
95
- run_id: "runid".to_string(),
96
- task_queue: TEST_Q.to_string(),
97
- history: hist,
98
- metrics: MetricsContext::no_op(),
99
- capabilities: DEFAULT_TEST_CAPABILITIES,
100
- },
101
- Box::new(driver).into(),
102
- );
103
- let mgr = WorkflowManager::new_from_machines(state_machines);
104
- Self {
105
- mgr,
106
- activation_tx: activations,
107
- completions_rx,
108
- completions_sync_tx,
109
- future_handle: Some(spawned),
110
- was_shutdown: false,
111
- }
112
- }
113
-
114
- #[instrument(skip(self))]
115
- pub(crate) async fn get_next_activation(&mut self) -> Result<WorkflowActivation> {
116
- let res = self.mgr.get_next_activation()?;
117
- debug!("Managed wf next activation: {}", &res);
118
- self.push_activation_to_wf(&res).await?;
119
- Ok(res)
120
- }
121
-
122
- /// Return outgoing server commands as of the last iteration
123
- pub(crate) fn get_server_commands(&mut self) -> OutgoingServerCommands {
124
- self.mgr.get_server_commands()
125
- }
126
-
127
- pub(crate) fn drain_queued_local_activities(&mut self) -> Vec<LocalActRequest> {
128
- self.mgr.drain_queued_local_activities()
129
- }
130
-
131
- /// Feed new history, as if received a new poll result. Returns new activation
132
- #[instrument(skip(self, update))]
133
- pub(crate) async fn new_history(
134
- &mut self,
135
- update: HistoryUpdate,
136
- ) -> Result<WorkflowActivation> {
137
- let res = self.mgr.feed_history_from_server(update)?;
138
- self.push_activation_to_wf(&res).await?;
139
- Ok(res)
140
- }
141
-
142
- /// Say a local activity completed (they always take 1 second in these tests)
143
- pub(crate) fn complete_local_activity(
144
- &mut self,
145
- seq_num: u32,
146
- result: ActivityExecutionResult,
147
- ) -> Result<bool> {
148
- self.mgr
149
- .notify_of_local_result(LocalResolution::LocalActivity(LocalActivityResolution {
150
- seq: seq_num,
151
- // We accept normal execution results and do this conversion because there
152
- // are more helpers for constructing them.
153
- result: result
154
- .status
155
- .expect("LA result must have a status")
156
- .try_into()
157
- .expect("LA execution result must be a valid LA result"),
158
- runtime: Duration::from_secs(1),
159
- attempt: 1,
160
- backoff: None,
161
- // Tests at this level don't use the LA dispatcher, so this is irrelevant
162
- original_schedule_time: None,
163
- }))
164
- }
165
-
166
- /// During testing it can be useful to run through all activations to simulate replay
167
- /// easily. Returns the last produced activation with jobs in it, or an activation with no
168
- /// jobs if the first call had no jobs.
169
- pub(crate) async fn process_all_activations(&mut self) -> Result<WorkflowActivation> {
170
- let mut last_act = self.get_next_activation().await?;
171
- let mut next_act = self.get_next_activation().await?;
172
- while !next_act.jobs.is_empty() {
173
- last_act = next_act;
174
- next_act = self.get_next_activation().await?;
175
- }
176
- Ok(last_act)
177
- }
178
-
179
- pub async fn shutdown(&mut self) -> WorkflowResult<Payload> {
180
- self.was_shutdown = true;
181
- // Send an eviction to ensure wf exits if it has not finished (ex: feeding partial hist)
182
- let _ = self.activation_tx.send(create_evict_activation(
183
- "not actually important".to_string(),
184
- "force shutdown".to_string(),
185
- EvictionReason::Unspecified,
186
- ));
187
- self.future_handle.take().unwrap().await.unwrap()
188
- }
189
-
190
- #[instrument(skip(self, res))]
191
- async fn push_activation_to_wf(&mut self, res: &WorkflowActivation) -> Result<()> {
192
- if res.jobs.is_empty() {
193
- // Nothing to do here
194
- return Ok(());
195
- }
196
- self.activation_tx
197
- .send(res.clone())
198
- .expect("Workflow should not be dropped if we are still sending activations");
199
- // Move the completion response to the sync workflow bridge
200
- self.completions_sync_tx
201
- .send(self.completions_rx.recv().await.unwrap())
202
- .unwrap();
203
- self.mgr.machines.iterate_machines()?;
204
- Ok(())
205
- }
206
- }
207
-
208
- impl Drop for ManagedWFFunc {
209
- fn drop(&mut self) {
210
- // Double panics cause a SIGILL
211
- if !self.was_shutdown && !std::thread::panicking() {
212
- panic!("You must call `shutdown` to properly use ManagedWFFunc in tests")
213
- }
214
- }
215
- }
@@ -1,2 +0,0 @@
1
- FROM temporalio/base-ci-builder:1.5.0
2
- WORKDIR /temporal
@@ -1,80 +0,0 @@
1
- $(VERBOSE).SILENT:
2
- ############################# Main targets #############################
3
- ci-build: install proto
4
-
5
- # Install dependencies.
6
- install: grpc-install api-linter-install buf-install
7
-
8
- # Run all linters and compile proto files.
9
- proto: grpc
10
- ########################################################################
11
-
12
- ##### Variables ######
13
- ifndef GOPATH
14
- GOPATH := $(shell go env GOPATH)
15
- endif
16
-
17
- GOBIN := $(if $(shell go env GOBIN),$(shell go env GOBIN),$(GOPATH)/bin)
18
- SHELL := PATH=$(GOBIN):$(PATH) /bin/sh
19
-
20
- COLOR := "\e[1;36m%s\e[0m\n"
21
-
22
- PROTO_ROOT := .
23
- PROTO_FILES = $(shell find $(PROTO_ROOT) -name "*.proto")
24
- PROTO_DIRS = $(sort $(dir $(PROTO_FILES)))
25
- PROTO_OUT := .gen
26
- PROTO_IMPORTS = -I=$(PROTO_ROOT) -I=$(shell go list -modfile build/go.mod -m -f '{{.Dir}}' github.com/temporalio/gogo-protobuf)/protobuf
27
-
28
- $(PROTO_OUT):
29
- mkdir $(PROTO_OUT)
30
-
31
- ##### Compile proto files for go #####
32
- grpc: buf-lint api-linter buf-breaking gogo-grpc fix-path
33
-
34
- go-grpc: clean $(PROTO_OUT)
35
- printf $(COLOR) "Compile for go-gRPC..."
36
- $(foreach PROTO_DIR,$(PROTO_DIRS),protoc --fatal_warnings $(PROTO_IMPORTS) --go_out=plugins=grpc,paths=source_relative:$(PROTO_OUT) $(PROTO_DIR)*.proto;)
37
-
38
- gogo-grpc: clean $(PROTO_OUT)
39
- printf $(COLOR) "Compile for gogo-gRPC..."
40
- $(foreach PROTO_DIR,$(PROTO_DIRS),protoc --fatal_warnings $(PROTO_IMPORTS) --gogoslick_out=Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/wrappers.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/duration.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/descriptor.proto=github.com/golang/protobuf/protoc-gen-go/descriptor,Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,plugins=grpc,paths=source_relative:$(PROTO_OUT) $(PROTO_DIR)*.proto;)
41
-
42
- fix-path:
43
- mv -f $(PROTO_OUT)/temporal/api/* $(PROTO_OUT) && rm -rf $(PROTO_OUT)/temporal
44
-
45
- ##### Plugins & tools #####
46
- grpc-install: gogo-protobuf-install
47
- printf $(COLOR) "Install/update gRPC plugins..."
48
- go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
49
-
50
- gogo-protobuf-install: go-protobuf-install
51
- go install -modfile build/go.mod github.com/temporalio/gogo-protobuf/protoc-gen-gogoslick
52
-
53
- go-protobuf-install:
54
- go install github.com/golang/protobuf/protoc-gen-go@v1.5.2
55
-
56
- api-linter-install:
57
- printf $(COLOR) "Install/update api-linter..."
58
- go install github.com/googleapis/api-linter/cmd/api-linter@v1.32.3
59
-
60
- buf-install:
61
- printf $(COLOR) "Install/update buf..."
62
- go install github.com/bufbuild/buf/cmd/buf@v1.6.0
63
-
64
- ##### Linters #####
65
- api-linter:
66
- printf $(COLOR) "Run api-linter..."
67
- api-linter --set-exit-status $(PROTO_IMPORTS) --config $(PROTO_ROOT)/api-linter.yaml $(PROTO_FILES)
68
-
69
- buf-lint:
70
- printf $(COLOR) "Run buf linter..."
71
- (cd $(PROTO_ROOT) && buf lint)
72
-
73
- buf-breaking:
74
- @printf $(COLOR) "Run buf breaking changes check against master branch..."
75
- @(cd $(PROTO_ROOT) && buf breaking --against '.git#branch=master')
76
-
77
- ##### Clean #####
78
- clean:
79
- printf $(COLOR) "Delete generated go files..."
80
- rm -rf $(PROTO_OUT)
@@ -1,40 +0,0 @@
1
- - included_paths:
2
- - '**/*.proto'
3
- disabled_rules:
4
- - 'core::0192::has-comments'
5
-
6
- - included_paths:
7
- - '**/message.proto'
8
- disabled_rules:
9
- - 'core::0122::name-suffix'
10
- - 'core::0123::resource-annotation'
11
-
12
- - included_paths:
13
- - '**/workflowservice/v1/request_response.proto'
14
- - '**/operatorservice/v1/request_response.proto'
15
- disabled_rules:
16
- - 'core::0122::name-suffix'
17
- - 'core::0131::request-name-required'
18
- - 'core::0131::request-unknown-fields'
19
- - 'core::0132::request-parent-required'
20
- - 'core::0132::request-unknown-fields'
21
- - 'core::0132::response-unknown-fields'
22
- - 'core::0134::request-unknown-fields'
23
- - 'core::0158::request-page-size-field'
24
- - 'core::0158::request-page-token-field'
25
- - 'core::0158::response-next-page-token-field'
26
- - 'core::0158::response-plural-first-field'
27
- - 'core::0158::response-repeated-first-field'
28
-
29
- - included_paths:
30
- - '**/workflowservice/v1/service.proto'
31
- - '**/operatorservice/v1/service.proto'
32
- disabled_rules:
33
- - 'core::0127::http-annotation'
34
- - 'core::0131::method-signature'
35
- - 'core::0131::response-message-name'
36
-
37
- - included_paths:
38
- - 'dependencies/gogoproto/gogo.proto'
39
- disabled_rules:
40
- - 'all'
@@ -1,9 +0,0 @@
1
- version: v1
2
- breaking:
3
- use:
4
- - WIRE_JSON
5
- lint:
6
- use:
7
- - DEFAULT
8
- ignore:
9
- - dependencies
@@ -1,7 +0,0 @@
1
- module build
2
-
3
- go 1.18
4
-
5
- require (
6
- github.com/temporalio/gogo-protobuf v1.22.1
7
- )
@@ -1,5 +0,0 @@
1
- github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
2
- github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
3
- github.com/temporalio/gogo-protobuf v1.22.1 h1:K5ja5MqmCQKo4tlX7u3g+ZJqbvRr0589ss2cZQx2dSM=
4
- github.com/temporalio/gogo-protobuf v1.22.1/go.mod h1:tCaEv+fB8tsyLgoaqKr78K/JOhdRe684yyo0z30SHyA=
5
- golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -1,6 +0,0 @@
1
- // There is special go module in `build` directory that is used to control tools versions.
2
- // This file exists because go 1.18 doesn't allow go sub modules if root dirrectory is not a go module.
3
-
4
- module api
5
-
6
- go 1.18
@@ -1,141 +0,0 @@
1
- // Protocol Buffers for Go with Gadgets
2
- //
3
- // Copyright (c) 2013, The GoGo Authors. All rights reserved.
4
- // http://github.com/temporalio/gogo-protobuf
5
- //
6
- // Redistribution and use in source and binary forms, with or without
7
- // modification, are permitted provided that the following conditions are
8
- // met:
9
- //
10
- // * Redistributions of source code must retain the above copyright
11
- // notice, this list of conditions and the following disclaimer.
12
- // * Redistributions in binary form must reproduce the above
13
- // copyright notice, this list of conditions and the following disclaimer
14
- // in the documentation and/or other materials provided with the
15
- // distribution.
16
- //
17
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
-
29
- syntax = "proto2";
30
- package gogoproto;
31
-
32
- import "google/protobuf/descriptor.proto";
33
-
34
- option go_package = "github.com/gogo/protobuf/gogoproto";
35
-
36
- extend google.protobuf.EnumOptions {
37
- optional bool goproto_enum_prefix = 62001;
38
- optional bool goproto_enum_stringer = 62021;
39
- optional bool enum_stringer = 62022;
40
- optional string enum_customname = 62023;
41
- optional bool enumdecl = 62024;
42
- }
43
-
44
- extend google.protobuf.EnumValueOptions {
45
- optional string enumvalue_customname = 66001;
46
- }
47
-
48
- extend google.protobuf.FileOptions {
49
- optional bool goproto_getters_all = 63001;
50
- optional bool goproto_enum_prefix_all = 63002;
51
- optional bool goproto_stringer_all = 63003;
52
- optional bool verbose_equal_all = 63004;
53
- optional bool face_all = 63005;
54
- optional bool gostring_all = 63006;
55
- optional bool populate_all = 63007;
56
- optional bool stringer_all = 63008;
57
- optional bool onlyone_all = 63009;
58
-
59
- optional bool equal_all = 63013;
60
- optional bool description_all = 63014;
61
- optional bool testgen_all = 63015;
62
- optional bool benchgen_all = 63016;
63
- optional bool marshaler_all = 63017;
64
- optional bool unmarshaler_all = 63018;
65
- optional bool stable_marshaler_all = 63019;
66
-
67
- optional bool sizer_all = 63020;
68
-
69
- optional bool goproto_enum_stringer_all = 63021;
70
- optional bool enum_stringer_all = 63022;
71
-
72
- optional bool unsafe_marshaler_all = 63023;
73
- optional bool unsafe_unmarshaler_all = 63024;
74
-
75
- optional bool goproto_extensions_map_all = 63025;
76
- optional bool goproto_unrecognized_all = 63026;
77
- optional bool gogoproto_import = 63027;
78
- optional bool protosizer_all = 63028;
79
- optional bool compare_all = 63029;
80
- optional bool typedecl_all = 63030;
81
- optional bool enumdecl_all = 63031;
82
-
83
- optional bool goproto_registration = 63032;
84
- optional bool messagename_all = 63033;
85
-
86
- optional bool goproto_sizecache_all = 63034;
87
- optional bool goproto_unkeyed_all = 63035;
88
- }
89
-
90
- extend google.protobuf.MessageOptions {
91
- optional bool goproto_getters = 64001;
92
- optional bool goproto_stringer = 64003;
93
- optional bool verbose_equal = 64004;
94
- optional bool face = 64005;
95
- optional bool gostring = 64006;
96
- optional bool populate = 64007;
97
- optional bool stringer = 67008;
98
- optional bool onlyone = 64009;
99
-
100
- optional bool equal = 64013;
101
- optional bool description = 64014;
102
- optional bool testgen = 64015;
103
- optional bool benchgen = 64016;
104
- optional bool marshaler = 64017;
105
- optional bool unmarshaler = 64018;
106
- optional bool stable_marshaler = 64019;
107
-
108
- optional bool sizer = 64020;
109
-
110
- optional bool unsafe_marshaler = 64023;
111
- optional bool unsafe_unmarshaler = 64024;
112
-
113
- optional bool goproto_extensions_map = 64025;
114
- optional bool goproto_unrecognized = 64026;
115
-
116
- optional bool protosizer = 64028;
117
- optional bool compare = 64029;
118
-
119
- optional bool typedecl = 64030;
120
-
121
- optional bool messagename = 64033;
122
-
123
- optional bool goproto_sizecache = 64034;
124
- optional bool goproto_unkeyed = 64035;
125
- }
126
-
127
- extend google.protobuf.FieldOptions {
128
- optional bool nullable = 65001;
129
- optional bool embed = 65002;
130
- optional string customtype = 65003;
131
- optional string customname = 65004;
132
- optional string jsontag = 65005;
133
- optional string moretags = 65006;
134
- optional string casttype = 65007;
135
- optional string castkey = 65008;
136
- optional string castvalue = 65009;
137
-
138
- optional bool stdtime = 65010;
139
- optional bool stdduration = 65011;
140
- optional bool wktpointer = 65012;
141
- }