diff --git a/pkg/tasks/tasks.go b/pkg/tasks/tasks.go index 3dd7f8e020..496243b666 100644 --- a/pkg/tasks/tasks.go +++ b/pkg/tasks/tasks.go @@ -54,7 +54,7 @@ func StartTicker(taskID string, finishedChan <-chan struct{}) { for { select { case <-time.After(time.Second * 2): - if err := UpdateTaskStatusTimestamp(taskID); err != nil { + if err := updateTaskStatusTimestampSafely(taskID); err != nil { logger.Error(err) } case <-finishedChan: @@ -63,6 +63,18 @@ func StartTicker(taskID string, finishedChan <-chan struct{}) { } } +func updateTaskStatusTimestampSafely(taskID string) (finalError error) { + defer func() { + if r := recover(); r != nil { + finalError = fmt.Errorf("recovered from panic safely while updating task (%s) status timestamp: %v", taskID, r) + } + }() + if err := UpdateTaskStatusTimestamp(taskID); err != nil { + return err + } + return nil +} + func SetTaskStatus(id string, message string, status string) error { db := persistence.MustGetDBSession()