From 402703f226b0cbc89138a6ac4e12e5cdae5a8442 Mon Sep 17 00:00:00 2001 From: qiuming Date: Tue, 12 Sep 2023 23:33:33 +0800 Subject: [PATCH] [Cherry-Pick] Optimize of removing finalizer no matter the dataupload datadownload cr is been deleted or not (#6808) Signed-off-by: Ming Qiu --- pkg/controller/data_download_controller.go | 4 +++- pkg/controller/data_upload_controller.go | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pkg/controller/data_download_controller.go b/pkg/controller/data_download_controller.go index 65b4ee2d3..cc60cacef 100644 --- a/pkg/controller/data_download_controller.go +++ b/pkg/controller/data_download_controller.go @@ -309,7 +309,9 @@ func (r *DataDownloadReconciler) Reconcile(ctx context.Context, req ctrl.Request } else { // put the finilizer remove action here for all cr will goes to the final status, we could check finalizer and do remove action in final status // instead of intermediate state - if isDataDownloadInFinalState(dd) && !dd.DeletionTimestamp.IsZero() && controllerutil.ContainsFinalizer(dd, DataUploadDownloadFinalizer) { + // remove finalizer no matter whether the cr is being deleted or not for it is no longer needed when internal resources are all cleaned up + // also in final status cr won't block the direct delete of the velero namespace + if isDataDownloadInFinalState(dd) && controllerutil.ContainsFinalizer(dd, DataUploadDownloadFinalizer) { original := dd.DeepCopy() controllerutil.RemoveFinalizer(dd, DataUploadDownloadFinalizer) if err := r.client.Patch(ctx, dd, client.MergeFrom(original)); err != nil { diff --git a/pkg/controller/data_upload_controller.go b/pkg/controller/data_upload_controller.go index d16951075..18f7e09f9 100644 --- a/pkg/controller/data_upload_controller.go +++ b/pkg/controller/data_upload_controller.go @@ -308,8 +308,10 @@ func (r *DataUploadReconciler) Reconcile(ctx context.Context, req ctrl.Request) return ctrl.Result{}, nil } else { // put the finilizer remove action here for all cr will goes to the final status, we could check finalizer and do remove action in final status - // instead of intermediate state - if isDataUploadInFinalState(du) && !du.DeletionTimestamp.IsZero() && controllerutil.ContainsFinalizer(du, DataUploadDownloadFinalizer) { + // instead of intermediate state. + // remove finalizer no matter whether the cr is being deleted or not for it is no longer needed when internal resources are all cleaned up + // also in final status cr won't block the direct delete of the velero namespace + if isDataUploadInFinalState(du) && controllerutil.ContainsFinalizer(du, DataUploadDownloadFinalizer) { original := du.DeepCopy() controllerutil.RemoveFinalizer(du, DataUploadDownloadFinalizer) if err := r.client.Patch(ctx, du, client.MergeFrom(original)); err != nil {