@@ -16,6 +16,7 @@ package main
16
16
17
17
import (
18
18
"context"
19
+ "errors"
19
20
"fmt"
20
21
"log"
21
22
"time"
@@ -24,6 +25,7 @@ import (
24
25
)
25
26
26
27
var stage = 0
28
+ var failActivityTries = 0
27
29
28
30
func main () {
29
31
w , err := workflow .NewWorker ()
@@ -43,6 +45,11 @@ func main() {
43
45
}
44
46
fmt .Println ("TestActivity registered" )
45
47
48
+ if err := w .RegisterActivity (FailActivity ); err != nil {
49
+ log .Fatal (err )
50
+ }
51
+ fmt .Println ("FailActivity registered" )
52
+
46
53
// Start workflow runner
47
54
if err := w .Start (); err != nil {
48
55
log .Fatal (err )
@@ -112,6 +119,15 @@ func main() {
112
119
113
120
fmt .Printf ("stage: %d\n " , stage )
114
121
122
+ waitCtx , cancel := context .WithTimeout (ctx , 5 * time .Second )
123
+ _ , err = wfClient .WaitForWorkflowCompletion (waitCtx , instanceID )
124
+ cancel ()
125
+ if err != nil {
126
+ log .Fatalf ("failed to wait for workflow: %v" , err )
127
+ }
128
+
129
+ fmt .Printf ("fail activity executions: %d\n " , failActivityTries )
130
+
115
131
respFetch , err = wfClient .FetchWorkflowMetadata (ctx , instanceID , workflow .WithFetchPayloads (true ))
116
132
if err != nil {
117
133
log .Fatalf ("failed to get workflow: %v" , err )
@@ -186,6 +202,15 @@ func TestWorkflow(ctx *workflow.WorkflowContext) (any, error) {
186
202
return nil , err
187
203
}
188
204
205
+ if err := ctx .CallActivity (FailActivity , workflow .ActivityRetryPolicy (workflow.RetryPolicy {
206
+ MaxAttempts : 3 ,
207
+ InitialRetryInterval : 100 * time .Millisecond ,
208
+ BackoffCoefficient : 2 ,
209
+ MaxRetryInterval : 1 * time .Second ,
210
+ })).Await (nil ); err == nil {
211
+ return nil , fmt .Errorf ("unexpected no error executing fail activity" )
212
+ }
213
+
189
214
return output , nil
190
215
}
191
216
@@ -199,3 +224,8 @@ func TestActivity(ctx workflow.ActivityContext) (any, error) {
199
224
200
225
return fmt .Sprintf ("Stage: %d" , stage ), nil
201
226
}
227
+
228
+ func FailActivity (ctx workflow.ActivityContext ) (any , error ) {
229
+ failActivityTries += 1
230
+ return nil , errors .New ("dummy activity error" )
231
+ }
0 commit comments