@@ -49,6 +49,8 @@ import (
4949const (
5050 retryPollOperationInitialInterval = 200 * time .Millisecond
5151 retryPollOperationMaxInterval = 10 * time .Second
52+ // How long the same poll task error can remain suppressed
53+ lastPollTaskErrSuppressTime = 1 * time .Minute
5254)
5355
5456var (
@@ -170,6 +172,10 @@ type (
170172 pollerRequestCh chan struct {}
171173 taskQueueCh chan interface {}
172174 sessionTokenBucket * sessionTokenBucket
175+
176+ lastPollTaskErrMessage string
177+ lastPollTaskErrStarted time.Time
178+ lastPollTaskErrLock sync.Mutex
173179 }
174180
175181 polledTask struct {
@@ -304,9 +310,7 @@ func (bw *baseWorker) pollTask() {
304310 bw .retrier .Throttle (bw .stopCh )
305311 if bw .pollLimiter == nil || bw .pollLimiter .Wait (bw .limiterContext ) == nil {
306312 task , err = bw .options .taskWorker .PollTask ()
307- if err != nil && enableVerboseLogging {
308- bw .logger .Debug ("Failed to poll for task." , tagError , err )
309- }
313+ bw .logPollTaskError (err )
310314 if err != nil {
311315 if isNonRetriableError (err ) {
312316 bw .logger .Error ("Worker received non-retriable error. Shutting down." , tagError , err )
@@ -333,6 +337,24 @@ func (bw *baseWorker) pollTask() {
333337 }
334338}
335339
340+ func (bw * baseWorker ) logPollTaskError (err error ) {
341+ bw .lastPollTaskErrLock .Lock ()
342+ defer bw .lastPollTaskErrLock .Unlock ()
343+ // No error means reset the message and time
344+ if err == nil {
345+ bw .lastPollTaskErrMessage = ""
346+ bw .lastPollTaskErrStarted = time .Now ()
347+ return
348+ }
349+ // Log the error as warn if it doesn't match the last error seen or its over
350+ // the time since
351+ if err .Error () != bw .lastPollTaskErrMessage || time .Since (bw .lastPollTaskErrStarted ) > lastPollTaskErrSuppressTime {
352+ bw .logger .Warn ("Failed to poll for task." , tagError , err )
353+ bw .lastPollTaskErrMessage = err .Error ()
354+ bw .lastPollTaskErrStarted = time .Now ()
355+ }
356+ }
357+
336358func isNonRetriableError (err error ) bool {
337359 if err == nil {
338360 return false
0 commit comments