Skip to content

Commit cda71d8

Browse files
committed
remove recursion
1 parent a2dcb5d commit cda71d8

File tree

1 file changed

+24
-20
lines changed

1 file changed

+24
-20
lines changed

backend/monoprocess/monoprocess.go

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -44,30 +44,34 @@ func NewMonoprocessBackend(b backend.Backend, signalBufferSize int, signalTimeou
4444
}
4545

4646
func (b *monoprocessBackend) GetWorkflowTask(ctx context.Context) (*task.Workflow, error) {
47-
if w, err := b.Backend.GetWorkflowTask(ctx); w != nil || err != nil {
48-
return w, err
49-
}
50-
b.logger.DebugContext(ctx, "worker waiting for workflow task signal")
51-
select {
52-
case <-ctx.Done():
53-
return nil, ctx.Err()
54-
case <-b.workflowSignal:
55-
b.logger.DebugContext(ctx, "worker got a workflow task signal")
56-
return b.GetWorkflowTask(ctx)
47+
// loop until either we find a task or the context is cancelled
48+
for {
49+
if w, err := b.Backend.GetWorkflowTask(ctx); w != nil || err != nil {
50+
return w, err
51+
}
52+
b.logger.DebugContext(ctx, "worker waiting for workflow task signal")
53+
select {
54+
case <-ctx.Done():
55+
return nil, ctx.Err()
56+
case <-b.workflowSignal:
57+
b.logger.DebugContext(ctx, "worker got a workflow task signal")
58+
}
5759
}
5860
}
5961

6062
func (b *monoprocessBackend) GetActivityTask(ctx context.Context) (*task.Activity, error) {
61-
if a, err := b.Backend.GetActivityTask(ctx); a != nil || err != nil {
62-
return a, err
63-
}
64-
b.logger.DebugContext(ctx, "worker waiting for activity task signal")
65-
select {
66-
case <-ctx.Done():
67-
return nil, ctx.Err()
68-
case <-b.activitySignal:
69-
b.logger.DebugContext(ctx, "worker got an activity task signal")
70-
return b.GetActivityTask(ctx)
63+
// loop until either we find a task or the context is cancelled
64+
for {
65+
if a, err := b.Backend.GetActivityTask(ctx); a != nil || err != nil {
66+
return a, err
67+
}
68+
b.logger.DebugContext(ctx, "worker waiting for activity task signal")
69+
select {
70+
case <-ctx.Done():
71+
return nil, ctx.Err()
72+
case <-b.activitySignal:
73+
b.logger.DebugContext(ctx, "worker got an activity task signal")
74+
}
7175
}
7276
}
7377

0 commit comments

Comments
 (0)