diff --git a/test/e2e/apps/job.go b/test/e2e/apps/job.go index 7a2010c0432..163eaaed2ee 100644 --- a/test/e2e/apps/job.go +++ b/test/e2e/apps/job.go @@ -141,7 +141,7 @@ var _ = SIGDescribe("Job", func() { ginkgo.It("should delete pods when suspended", func() { ginkgo.By("Creating a job with suspend=false") job := e2ejob.NewTestJob("notTerminate", "suspend-false-to-true", v1.RestartPolicyNever, parallelism, completions, nil, backoffLimit) - job.Spec.Suspend = pointer.BoolPtr(false) + job.Spec.Suspend = pointer.Bool(false) job, err := e2ejob.CreateJob(f.ClientSet, f.Namespace.Name, job) framework.ExpectNoError(err, "failed to create job in namespace: %s", f.Namespace.Name) @@ -150,10 +150,22 @@ var _ = SIGDescribe("Job", func() { framework.ExpectNoError(err, "failed to ensure number of pods associated with job %s is equal to parallelism count in namespace: %s", job.Name, f.Namespace.Name) ginkgo.By("Updating the job with suspend=true") - job, err = e2ejob.GetJob(f.ClientSet, f.Namespace.Name, job.Name) - framework.ExpectNoError(err, "failed to retrieve latest job object") - job.Spec.Suspend = pointer.BoolPtr(true) - job, err = e2ejob.UpdateJob(f.ClientSet, f.Namespace.Name, job) + err = wait.PollImmediate(framework.Poll, framework.SingleCallTimeout, func() (bool, error) { + job, err = e2ejob.GetJob(f.ClientSet, f.Namespace.Name, job.Name) + if err != nil { + return false, err + } + job.Spec.Suspend = pointer.Bool(true) + updatedJob, err := e2ejob.UpdateJob(f.ClientSet, f.Namespace.Name, job) + if err == nil { + job = updatedJob + return true, nil + } + if apierrors.IsConflict(err) { + return false, nil + } + return false, err + }) framework.ExpectNoError(err, "failed to update job in namespace: %s", f.Namespace.Name) ginkgo.By("Ensuring pods are deleted")