From 7c531ecc13005554d3fbc7be75dd9aab4c10a73e Mon Sep 17 00:00:00 2001 From: Eric Paris Date: Sat, 22 Jul 2017 13:36:08 -0400 Subject: [PATCH] Do not spin forever if kubectl drain races with other removal In https://github.com/kubernetes/kubernetes/pull/47450 we stopped returning an error if a pod disappeared before we could remove it. Instead we just continue to spin forever. Return "success" if a pod disappeared before we actually removed it. https://bugzilla.redhat.com/1473777 bug 1473777 --- pkg/kubectl/cmd/drain.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/kubectl/cmd/drain.go b/pkg/kubectl/cmd/drain.go index 83eb61b1e36..c1b78d70efd 100644 --- a/pkg/kubectl/cmd/drain.go +++ b/pkg/kubectl/cmd/drain.go @@ -495,9 +495,12 @@ func (o *DrainOptions) evictPods(pods []api.Pod, policyGroupVersion string, getP err = o.evictPod(pod, policyGroupVersion) if err == nil { break + } else if apierrors.IsNotFound(err) { + doneCh <- true + return } else if apierrors.IsTooManyRequests(err) { time.Sleep(5 * time.Second) - } else if !apierrors.IsNotFound(err) { + } else { errCh <- fmt.Errorf("error when evicting pod %q: %v", pod.Name, err) return }