Skip to content

Commit bba0550

Browse files
committed
Update waitForDelete to use PollUntilContextTimeout
Signed-off-by: Omer Aplatony <[email protected]>
1 parent 60efdae commit bba0550

File tree

2 files changed

+7
-13
lines changed

2 files changed

+7
-13
lines changed

staging/src/k8s.io/kubectl/pkg/drain/drain.go

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,10 @@ func (d *Helper) deletePods(pods []corev1.Pod, getPodFn func(namespace, name str
413413

414414
func waitForDelete(params waitForDeleteParams) ([]corev1.Pod, error) {
415415
pods := params.pods
416-
err := wait.PollImmediate(params.interval, params.timeout, func() (bool, error) {
416+
if params.ctx == nil {
417+
params.ctx = context.Background()
418+
}
419+
err := wait.PollUntilContextTimeout(params.ctx, params.interval, params.timeout, true, func(ctx context.Context) (done bool, err error) {
417420
pendingPods := []corev1.Pod{}
418421
for i, pod := range pods {
419422
p, err := params.getPodFn(pod.Namespace, pod.Name)
@@ -440,15 +443,7 @@ func waitForDelete(params waitForDeleteParams) ([]corev1.Pod, error) {
440443
}
441444
}
442445
pods = pendingPods
443-
if len(pendingPods) > 0 {
444-
select {
445-
case <-params.ctx.Done():
446-
return false, fmt.Errorf("global timeout reached: %v", params.globalTimeout)
447-
default:
448-
return false, nil
449-
}
450-
}
451-
return true, nil
446+
return len(pods) == 0, nil
452447
})
453448
return pods, err
454449
}

staging/src/k8s.io/kubectl/pkg/drain/drain_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ import (
3636
"k8s.io/apimachinery/pkg/runtime"
3737
"k8s.io/apimachinery/pkg/runtime/schema"
3838
"k8s.io/apimachinery/pkg/types"
39-
"k8s.io/apimachinery/pkg/util/wait"
4039
"k8s.io/client-go/kubernetes/fake"
4140
ktest "k8s.io/client-go/testing"
4241
)
@@ -101,7 +100,7 @@ func TestDeletePods(t *testing.T) {
101100
timeout: 3 * time.Second,
102101
expectPendingPods: true,
103102
expectError: true,
104-
expectedError: &wait.ErrWaitTimeout,
103+
expectedError: &context.DeadlineExceeded,
105104
getPodFn: func(namespace, name string) (*corev1.Pod, error) {
106105
oldPodMap, _ := createPods(false)
107106
if oldPod, found := oldPodMap[name]; found {
@@ -117,7 +116,7 @@ func TestDeletePods(t *testing.T) {
117116
ctxTimeoutEarly: true,
118117
expectPendingPods: true,
119118
expectError: true,
120-
expectedError: &wait.ErrWaitTimeout,
119+
expectedError: &context.Canceled,
121120
getPodFn: func(namespace, name string) (*corev1.Pod, error) {
122121
oldPodMap, _ := createPods(false)
123122
if oldPod, found := oldPodMap[name]; found {

0 commit comments

Comments
 (0)