retry on conflict for negative TerminationGracePeriodSeconds update

This commit is contained in:
Paco Xu 2023-02-28 17:55:07 +08:00
parent 806b215cce
commit 7d8437933e

View File

@ -38,6 +38,7 @@ import (
"k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/watch" "k8s.io/apimachinery/pkg/watch"
v1core "k8s.io/client-go/kubernetes/typed/core/v1" v1core "k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/client-go/util/retry"
"k8s.io/kubernetes/pkg/kubelet/events" "k8s.io/kubernetes/pkg/kubelet/events"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet" e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
@ -384,14 +385,16 @@ var _ = SIGDescribe("Pods Extended", func() {
framework.Failf("pod spec TerminationGracePeriodSeconds is not 1: %d", *pod.Spec.TerminationGracePeriodSeconds) framework.Failf("pod spec TerminationGracePeriodSeconds is not 1: %d", *pod.Spec.TerminationGracePeriodSeconds)
} }
time.Sleep(5 * time.Second) // retry if the TerminationGracePeriodSeconds is overrided
// see more in https://github.com/kubernetes/kubernetes/pull/115606
pod, err = podClient.Get(ctx, pod.Name, metav1.GetOptions{}) err = retry.RetryOnConflict(retry.DefaultBackoff, func() error {
framework.ExpectNoError(err, "failed to query for pod") pod, err := podClient.Get(ctx, pod.Name, metav1.GetOptions{})
framework.ExpectNoError(err, "failed to query for pod")
ginkgo.By("updating the pod to have a negative TerminationGracePeriodSeconds") ginkgo.By("updating the pod to have a negative TerminationGracePeriodSeconds")
pod.Spec.TerminationGracePeriodSeconds = utilpointer.Int64(-1) pod.Spec.TerminationGracePeriodSeconds = utilpointer.Int64(-1)
_, err = podClient.PodInterface.Update(ctx, pod, metav1.UpdateOptions{}) _, err = podClient.PodInterface.Update(ctx, pod, metav1.UpdateOptions{})
return err
})
framework.ExpectNoError(err, "failed to update pod") framework.ExpectNoError(err, "failed to update pod")
pod, err = podClient.Get(ctx, pod.Name, metav1.GetOptions{}) pod, err = podClient.Get(ctx, pod.Name, metav1.GetOptions{})