-
Notifications
You must be signed in to change notification settings - Fork 123
Expand file tree
/
Copy pathworkflows.rs
More file actions
41 lines (39 loc) · 1.5 KB
/
workflows.rs
File metadata and controls
41 lines (39 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use crate::common::activity_functions::StdActivities;
use std::time::Duration;
use temporalio_common::{prost_dur, protos::temporal::api::common::v1::RetryPolicy};
use temporalio_macros::{workflow, workflow_methods};
use temporalio_sdk::{ActivityOptions, LocalActivityOptions, WorkflowContext, WorkflowResult};
#[workflow]
#[derive(Default)]
pub(crate) struct LaProblemWorkflow;
#[workflow_methods]
impl LaProblemWorkflow {
#[run(name = "evict_while_la_running_no_interference")]
pub(crate) async fn run(ctx: &mut WorkflowContext<Self>) -> WorkflowResult<()> {
ctx.start_local_activity(
StdActivities::delay,
Duration::from_secs(15),
LocalActivityOptions {
retry_policy: RetryPolicy {
initial_interval: Some(prost_dur!(from_micros(15))),
backoff_coefficient: 1_000.,
maximum_interval: Some(prost_dur!(from_millis(1500))),
maximum_attempts: 4,
non_retryable_error_types: vec![],
},
timer_backoff_threshold: Some(Duration::from_secs(1)),
..Default::default()
},
)
.await
.map_err(|e| anyhow::anyhow!("{e}"))?;
ctx.start_activity(
StdActivities::delay,
Duration::from_secs(15),
ActivityOptions::start_to_close_timeout(Duration::from_secs(20)),
)
.await
.map_err(|e| anyhow::anyhow!("{e}"))?;
Ok(())
}
}