Merge pull request #127881 from omerap12/drain-package-PollUntilContextTimeout

Update waitForDelete to use PollUntilContextTimeout

Kubernetes-commit: 5b1a4caedae0ca28adc2b22837789d6828b74d19
This commit is contained in:
Kubernetes Publisher 2024-10-14 06:18:20 +01:00
commit 86e0d9e48c
4 changed files with 13 additions and 19 deletions

4
go.mod
View File

@ -31,9 +31,9 @@ require (
golang.org/x/sys v0.26.0
gopkg.in/evanphx/json-patch.v4 v4.12.0
k8s.io/api v0.0.0-20241011135352-a432ebea6002
k8s.io/apimachinery v0.0.0-20241011134855-ee6d9667b400
k8s.io/apimachinery v0.0.0-20241012054809-2b29434a8c7f
k8s.io/cli-runtime v0.0.0-20241011145636-a38d5abff693
k8s.io/client-go v0.0.0-20241011140021-64f5574f09ee
k8s.io/client-go v0.0.0-20241014015924-9cff3e43bde3
k8s.io/component-base v0.0.0-20241011141534-5f571d319450
k8s.io/component-helpers v0.0.0-20241011141825-7b6fde1148bd
k8s.io/klog/v2 v2.130.1

8
go.sum
View File

@ -213,12 +213,12 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
k8s.io/api v0.0.0-20241011135352-a432ebea6002 h1:RvGxsDUWpmBJSDbSf4VxbU+ITNerDQ/xYIF7xjK9NsA=
k8s.io/api v0.0.0-20241011135352-a432ebea6002/go.mod h1:KfoQfYB8K80kj2ZJhrj/CwEwZSAkQYsRFP+xICkEFLk=
k8s.io/apimachinery v0.0.0-20241011134855-ee6d9667b400 h1:WJ70KEsKGuWl+K2pEqyC0xY436+4pNQvWknw6wOY9bk=
k8s.io/apimachinery v0.0.0-20241011134855-ee6d9667b400/go.mod h1:y/FzDt/GaPgPceo5rJcCtD4qW5l8SwtbzESSMGEY6P8=
k8s.io/apimachinery v0.0.0-20241012054809-2b29434a8c7f h1:LR+BiqgooGKRUEJhODAP/pjyB+w+Y+CMYg6e0M5ok0k=
k8s.io/apimachinery v0.0.0-20241012054809-2b29434a8c7f/go.mod h1:y/FzDt/GaPgPceo5rJcCtD4qW5l8SwtbzESSMGEY6P8=
k8s.io/cli-runtime v0.0.0-20241011145636-a38d5abff693 h1:iAMHRpOeM49eghvCeXraPq74JrURm3as94wOzQSjTzk=
k8s.io/cli-runtime v0.0.0-20241011145636-a38d5abff693/go.mod h1:0vghq0zr9PDOH9fNAtLmpuQo1kafr4lVlElXhJLttuI=
k8s.io/client-go v0.0.0-20241011140021-64f5574f09ee h1:fMnowvfj0lE9cimUeO4RVAu82GS8phWh1flFr31geGQ=
k8s.io/client-go v0.0.0-20241011140021-64f5574f09ee/go.mod h1:19gUihItqYL1EFf5ypVP9XBmdFDz3Uk+npRTnsyM7Cg=
k8s.io/client-go v0.0.0-20241014015924-9cff3e43bde3 h1:X3fef6ODHumKO/OgkKFeKr28VWQDMZHcpl9yKz1zBmA=
k8s.io/client-go v0.0.0-20241014015924-9cff3e43bde3/go.mod h1:U/n+PIH+4FltkenaqEKdlSEQfRMWr319haj1X8kvGXM=
k8s.io/component-base v0.0.0-20241011141534-5f571d319450 h1:reGtStlX3/j46f6heqGEH/igNt/suQ3Q88yNTyoBUKk=
k8s.io/component-base v0.0.0-20241011141534-5f571d319450/go.mod h1:C4UDhaaaw1voy7R+17HoW6ld/rFpiPCUu/UH0wTffAE=
k8s.io/component-helpers v0.0.0-20241011141825-7b6fde1148bd h1:JpSEBi/GIFNXkKXOOX9iuCRWqlG/ZDFYS2r2Hk3moyc=

View File

@ -413,7 +413,10 @@ func (d *Helper) deletePods(pods []corev1.Pod, getPodFn func(namespace, name str
func waitForDelete(params waitForDeleteParams) ([]corev1.Pod, error) {
pods := params.pods
err := wait.PollImmediate(params.interval, params.timeout, func() (bool, error) {
if params.ctx == nil {
params.ctx = context.Background()
}
err := wait.PollUntilContextTimeout(params.ctx, params.interval, params.timeout, true, func(ctx context.Context) (done bool, err error) {
pendingPods := []corev1.Pod{}
for i, pod := range pods {
p, err := params.getPodFn(pod.Namespace, pod.Name)
@ -440,15 +443,7 @@ func waitForDelete(params waitForDeleteParams) ([]corev1.Pod, error) {
}
}
pods = pendingPods
if len(pendingPods) > 0 {
select {
case <-params.ctx.Done():
return false, fmt.Errorf("global timeout reached: %v", params.globalTimeout)
default:
return false, nil
}
}
return true, nil
return len(pods) == 0, nil
})
return pods, err
}

View File

@ -36,7 +36,6 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/kubernetes/fake"
ktest "k8s.io/client-go/testing"
)
@ -101,7 +100,7 @@ func TestDeletePods(t *testing.T) {
timeout: 3 * time.Second,
expectPendingPods: true,
expectError: true,
expectedError: &wait.ErrWaitTimeout,
expectedError: &context.DeadlineExceeded,
getPodFn: func(namespace, name string) (*corev1.Pod, error) {
oldPodMap, _ := createPods(false)
if oldPod, found := oldPodMap[name]; found {
@ -117,7 +116,7 @@ func TestDeletePods(t *testing.T) {
ctxTimeoutEarly: true,
expectPendingPods: true,
expectError: true,
expectedError: &wait.ErrWaitTimeout,
expectedError: &context.Canceled,
getPodFn: func(namespace, name string) (*corev1.Pod, error) {
oldPodMap, _ := createPods(false)
if oldPod, found := oldPodMap[name]; found {