@@ -84,28 +84,29 @@ func (ww *WorkflowWorker) WaitForCompletion() error {
8484func (ww * WorkflowWorker ) runPoll (ctx context.Context ) {
8585 defer ww .pollersWg .Done ()
8686
87+ ticker := time .NewTicker (ww .options .WorkflowPollingInterval )
88+ defer ticker .Stop ()
8789 for {
90+ task , err := ww .poll (ctx , 30 * time .Second )
91+ if err != nil {
92+ ww .logger .ErrorContext (ctx , "error while polling for workflow task" , "error" , err )
93+ }
94+ if task != nil {
95+ ww .wg .Add (1 )
96+ ww .workflowTaskQueue <- task
97+ continue // check for new tasks right away
98+ }
99+
88100 select {
89101 case <- ctx .Done ():
90102 return
91-
92- default :
93- task , err := ww .poll (ctx , 30 * time .Second )
94- if err != nil {
95- ww .logger .Error ("error while polling for workflow task" , "error" , err )
96- continue
97- }
98-
99- if task != nil {
100- ww .wg .Add (1 )
101- ww .workflowTaskQueue <- task
102- }
103+ case <- ticker .C :
103104 }
104105 }
105106}
106107
107108func (ww * WorkflowWorker ) runDispatcher () {
108- var sem chan ( struct {})
109+ var sem chan struct {}
109110
110111 if ww .options .MaxParallelWorkflowTasks > 0 {
111112 sem = make (chan struct {}, ww .options .MaxParallelWorkflowTasks )
@@ -177,7 +178,7 @@ func (ww *WorkflowWorker) handle(ctx context.Context, t *task.Workflow) {
177178
178179 if err := ww .backend .CompleteWorkflowTask (
179180 ctx , t , t .WorkflowInstance , state , result .Executed , result .ActivityEvents , result .TimerEvents , result .WorkflowEvents ); err != nil {
180- ww .logger .Error ( "could not complete workflow task" , "error" , err )
181+ ww .logger .ErrorContext ( ctx , "could not complete workflow task" , "error" , err )
181182 panic ("could not complete workflow task" )
182183 }
183184}
@@ -210,7 +211,7 @@ func (ww *WorkflowWorker) getExecutor(ctx context.Context, t *task.Workflow) (wo
210211 // Try to get a cached executor
211212 executor , ok , err := ww .cache .Get (ctx , t .WorkflowInstance )
212213 if err != nil {
213- ww .logger .Error ( "could not get cached workflow task executor" , "error" , err )
214+ ww .logger .ErrorContext ( ctx , "could not get cached workflow task executor" , "error" , err )
214215 }
215216
216217 if ! ok {
@@ -224,7 +225,7 @@ func (ww *WorkflowWorker) getExecutor(ctx context.Context, t *task.Workflow) (wo
224225
225226 // Cache executor instance for future continuation tasks, or refresh last access time
226227 if err := ww .cache .Store (ctx , t .WorkflowInstance , executor ); err != nil {
227- ww .logger .Error ( "error while caching workflow task executor:" , "error" , err )
228+ ww .logger .ErrorContext ( ctx , "error while caching workflow task executor:" , "error" , err )
228229 }
229230
230231 return executor , nil
@@ -240,7 +241,7 @@ func (ww *WorkflowWorker) heartbeatTask(ctx context.Context, task *task.Workflow
240241 return
241242 case <- t .C :
242243 if err := ww .backend .ExtendWorkflowTask (ctx , task .ID , task .WorkflowInstance ); err != nil {
243- ww .logger .Error ( "could not heartbeat workflow task" , "error" , err )
244+ ww .logger .ErrorContext ( ctx , "could not heartbeat workflow task" , "error" , err )
244245 panic ("could not heartbeat workflow task" )
245246 }
246247 }
@@ -257,7 +258,7 @@ func (ww *WorkflowWorker) poll(ctx context.Context, timeout time.Duration) (*tas
257258
258259 task , err := ww .backend .GetWorkflowTask (ctx )
259260 if err != nil {
260- if errors .Is (err , context .Canceled ) {
261+ if errors .Is (err , context .DeadlineExceeded ) {
261262 return nil , nil
262263 }
263264
0 commit comments