From ad4fe13528188ddf96bba1f7e4ae28ca3671781e Mon Sep 17 00:00:00 2001 From: Aohan Yang Date: Mon, 6 Sep 2021 19:37:08 +0800 Subject: [PATCH] fix the error when cleaning up jobs for cronjob --- pkg/controller/cronjob/cronjob_controllerv2.go | 5 +++-- test/integration/cronjob/cronjob_test.go | 9 +++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/pkg/controller/cronjob/cronjob_controllerv2.go b/pkg/controller/cronjob/cronjob_controllerv2.go index 1455fec00fb..f1c2a3ca109 100644 --- a/pkg/controller/cronjob/cronjob_controllerv2.go +++ b/pkg/controller/cronjob/cronjob_controllerv2.go @@ -613,13 +613,14 @@ func (jm *ControllerV2) syncCronJob( } cj.Status.Active = append(cj.Status.Active, *jobRef) cj.Status.LastScheduleTime = &metav1.Time{Time: *scheduledTime} - if _, err := jm.cronJobControl.UpdateStatus(ctx, cj); err != nil { + updatedCJ, err = jm.cronJobControl.UpdateStatus(ctx, cj) + if err != nil { klog.InfoS("Unable to update status", "cronjob", klog.KRef(cj.GetNamespace(), cj.GetName()), "resourceVersion", cj.ResourceVersion, "err", err) return cj, nil, fmt.Errorf("unable to update status for %s (rv = %s): %v", klog.KRef(cj.GetNamespace(), cj.GetName()), cj.ResourceVersion, err) } t := nextScheduledTimeDuration(sched, now) - return cj, t, nil + return updatedCJ, t, nil } func getJobName(cj *batchv1.CronJob, scheduledTime time.Time) string { diff --git a/test/integration/cronjob/cronjob_test.go b/test/integration/cronjob/cronjob_test.go index f793ba5fefb..73e003f7ef7 100644 --- a/test/integration/cronjob/cronjob_test.go +++ b/test/integration/cronjob/cronjob_test.go @@ -26,6 +26,7 @@ import ( batchv1 "k8s.io/api/batch/v1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/client-go/informers" clientset "k8s.io/client-go/kubernetes" @@ -153,6 +154,14 @@ func TestCronJobLaunchesPodAndCleansUp(t *testing.T) { ns := framework.CreateTestingNamespace(namespaceName, server, t) defer framework.DeleteTestingNamespace(ns, server, t) + backupHandlers := runtime.ErrorHandlers + runtime.ErrorHandlers = append(runtime.ErrorHandlers, func(e error) { + t.Fatalf("Failed with error: %v", e) + }) + defer func() { + runtime.ErrorHandlers = backupHandlers + }() + cjClient := clientSet.BatchV1().CronJobs(ns.Name) stopCh := make(chan struct{})