From 87b6c2d32bccd04ce0da5a8bf58660386a077e80 Mon Sep 17 00:00:00 2001 From: Antonio Murdaca Date: Tue, 12 Feb 2019 22:44:07 +0100 Subject: [PATCH] pkg/daemon/update.go: check wait err and wrap it we missed checking it https://github.com/openshift/machine-config-operator/blob/master/pkg/daemon/update.go#L92 Signed-off-by: Antonio Murdaca --- pkg/daemon/update.go | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/pkg/daemon/update.go b/pkg/daemon/update.go index 42b7a2b711..70d32eb02a 100644 --- a/pkg/daemon/update.go +++ b/pkg/daemon/update.go @@ -89,23 +89,25 @@ func (dn *Daemon) updateOSAndReboot(newConfig *mcfgv1.MachineConfig) error { Factor: 2, } var lastErr error - wait.ExponentialBackoff(backoff, func() (bool, error) { + if err := wait.ExponentialBackoff(backoff, func() (bool, error) { err := drain.Drain(dn.kubeClient, []*corev1.Node{node}, &drain.DrainOptions{ DeleteLocalData: true, Force: true, GracePeriodSeconds: 600, IgnoreDaemonsets: true, }) - if err != nil { - glog.Infof("Draining failed with: %v; retrying...", err) - lastErr = err - return false, nil + if err == nil { + return true, nil + } + lastErr = err + glog.Infof("Draining failed with: %v, retrying", err) + return false, nil + + }); err != nil { + if err == wait.ErrWaitTimeout { + return errors.Wrapf(lastErr, "failed to drain node (%d tries): %v", backoff.Steps, err) } - lastErr = nil - return true, nil - }) - if lastErr != nil { - return errors.Wrapf(lastErr, "Failed to drain node (%d tries)", backoff.Steps) + return errors.Wrap(err, "failed to drain node") } glog.V(2).Info("Node successfully drained") }