func (r *Runner) finishTask(task kit.Task) { if task.IsComplete() { if !task.IsSuccess() { r.registry.Logger().Debugf("TaskRunner: Task %v failed after %v tries: %v", task.GetStrId(), task.GetTryCount(), task.GetError()) } else { secs := task.GetFinishedAt().Sub(*task.GetStartedAt()).Seconds() r.registry.Logger().Debugf("TaskRunner: Task %v completed successfully (%v secs)", task.GetStrId(), secs) } } else { r.Registry().Logger().Debugf("TaskRunner: Task %v(%v) failed, will retry: %v", task.GetStrId(), task.GetName(), task.GetError()) } if err := r.backend.Update(task); err != nil { r.registry.Logger().Errorf("TaskRunner: Could not update task: %v", err) } delete(r.activeTasks, task.GetStrId()) // Call onComplete handler if specified. spec := r.tasks[task.GetName()] onComplete := spec.GetOnCompleteHandler() if onComplete != nil { go onComplete(r.registry, task) } }