From 54410194a6380e82352dec63d1ab43a718243728 Mon Sep 17 00:00:00 2001 From: James McElwain Date: Tue, 2 Feb 2021 20:17:59 -0800 Subject: [PATCH] closes #9312 Because backOffLimit can be 0, a zero value for pod status failed will always cause the condition to return true. Signed-off-by: James McElwain --- pkg/kube/wait.go | 2 +- pkg/kube/wait_test.go | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/pkg/kube/wait.go b/pkg/kube/wait.go index 40f7b7a6e..489dd8132 100644 --- a/pkg/kube/wait.go +++ b/pkg/kube/wait.go @@ -190,7 +190,7 @@ func (w *waiter) isPodReady(pod *corev1.Pod) bool { } func (w *waiter) jobReady(job *batchv1.Job) bool { - if job.Status.Failed >= *job.Spec.BackoffLimit { + if job.Status.Failed > *job.Spec.BackoffLimit { w.log("Job is failed: %s/%s", job.GetNamespace(), job.GetName()) return false } diff --git a/pkg/kube/wait_test.go b/pkg/kube/wait_test.go index 3f7b86710..7864f5e00 100644 --- a/pkg/kube/wait_test.go +++ b/pkg/kube/wait_test.go @@ -266,6 +266,26 @@ func Test_waiter_jobReady(t *testing.T) { args: args{job: newJob("foo", 1, 1, 0, 1)}, want: false, }, + { + name: "job is completed with retry", + args: args{job: newJob("foo", 1, 1, 1, 1)}, + want: true, + }, + { + name: "job is failed with retry", + args: args{job: newJob("foo", 1, 1, 0, 2)}, + want: false, + }, + { + name: "job is completed single run", + args: args{job: newJob("foo", 0, 1, 1, 0)}, + want: true, + }, + { + name: "job is failed single run", + args: args{job: newJob("foo", 0, 1, 0, 1)}, + want: false, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {