Skip to content

Commit cb9c7de

Browse files
authored
Log poll failures at a higher level (#708)
1 parent 4915b0c commit cb9c7de

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

internal/internal_worker_base.go

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ import (
4949
const (
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

5456
var (
@@ -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+
336358
func isNonRetriableError(err error) bool {
337359
if err == nil {
338360
return false

0 commit comments

Comments
 (0)