diff --git a/modules/tasks.go b/modules/tasks.go index cf09caf..dbc0252 100644 --- a/modules/tasks.go +++ b/modules/tasks.go @@ -3,6 +3,7 @@ package modules import ( "container/list" "context" + "errors" "fmt" "sync" "sync/atomic" @@ -382,7 +383,12 @@ func (t *Task) executeWithLocking() { // run err := t.taskFn(t.ctx, t) - if err != nil { + switch { + case err == nil: + return + case errors.Is(err, context.Canceled): + log.Debugf("%s: task %s was canceled: %s", t.module.Name, t.name, err) + default: log.Errorf("%s: task %s failed: %s", t.module.Name, t.name, err) } } diff --git a/modules/worker.go b/modules/worker.go index d5ce369..5148d1d 100644 --- a/modules/worker.go +++ b/modules/worker.go @@ -25,8 +25,13 @@ var ( func (m *Module) StartWorker(name string, fn func(context.Context) error) { go func() { err := m.RunWorker(name, fn) - if err != nil { - log.Warningf("%s: worker %s failed: %s", m.Name, name, err) + switch { + case err == nil: + return + case errors.Is(err, context.Canceled): + log.Debugf("%s: worker %s was canceled: %s", m.Name, name, err) + default: + log.Errorf("%s: worker %s failed: %s", m.Name, name, err) } }() } @@ -87,7 +92,11 @@ func (m *Module) runServiceWorker(name string, backoffDuration time.Duration, fn lastFail = time.Now() // log error sleepFor := time.Duration(failCnt) * backoffDuration - log.Errorf("%s: service-worker %s failed (%d): %s - restarting in %s", m.Name, name, failCnt, err, sleepFor) + if errors.Is(err, context.Canceled) { + log.Debugf("%s: service-worker %s was canceled (%d): %s - restarting in %s", m.Name, name, failCnt, err, sleepFor) + } else { + log.Errorf("%s: service-worker %s failed (%d): %s - restarting in %s", m.Name, name, failCnt, err, sleepFor) + } select { case <-time.After(sleepFor): case <-m.Ctx.Done():