diff --git a/runtime/restart/monitor/monitor.go b/runtime/restart/monitor/monitor.go index 5a8e5622d..d829e9605 100644 --- a/runtime/restart/monitor/monitor.go +++ b/runtime/restart/monitor/monitor.go @@ -232,14 +232,17 @@ func (m *monitor) monitor(ctx context.Context) ([]change, error) { } } - // Task or Status return error, only desired to stop + // Task or Status return error, only desired to running if err != nil { logrus.WithError(err).Error("monitor") - if desiredStatus != containerd.Stopped { + if desiredStatus == containerd.Stopped { continue } } + // Known issue: + // The status may be empty when task failed but was deleted, + // which will result in an `on-failure` restart policy reconcile error. switch desiredStatus { case containerd.Running: if !restart.Reconcile(status, labels) {