From 4b0321b7185e2132827645aa1a6c29a68cf58ab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Ma=C5=82ek?= Date: Wed, 24 Apr 2024 17:32:38 +0200 Subject: [PATCH] fix: conflict updating ControlPlane's finalizers is not an error --- controller/controlplane/controller.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/controller/controlplane/controller.go b/controller/controlplane/controller.go index 22334f5a3..0a436ff24 100644 --- a/controller/controlplane/controller.go +++ b/controller/controlplane/controller.go @@ -211,11 +211,17 @@ func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Resu crbFinalizerSet := controllerutil.AddFinalizer(cp, string(ControlPlaneFinalizerCleanupClusterRoleBinding)) vwcFinalizerSet := controllerutil.AddFinalizer(cp, string(ControlPlaneFinalizerCleanupValidatingWebhookConfiguration)) if crFinalizerSet || crbFinalizerSet || vwcFinalizerSet { - log.Trace(logger, "Setting finalizers", cp) + log.Trace(logger, "setting finalizers", cp) if err := r.Client.Update(ctx, cp); err != nil { + if k8serrors.IsConflict(err) { + log.Debug(logger, "conflict found when updating ControlPlane, retrying", cp) + return ctrl.Result{Requeue: true, RequeueAfter: requeueWithoutBackoff}, nil + } return ctrl.Result{}, fmt.Errorf("failed updating ControlPlane's finalizers : %w", err) } - return ctrl.Result{}, nil + // Requeue to ensure that we do not miss next reconciliation request in case + // AddFinalizer calls returned true but the update resulted in a noop. + return ctrl.Result{Requeue: true, RequeueAfter: requeueWithoutBackoff}, nil } k8sutils.InitReady(cp)