diff --git a/pkg/frame/controller/consister.go b/pkg/frame/controller/consister.go index 7c99d7c..c7e0172 100644 --- a/pkg/frame/controller/consister.go +++ b/pkg/frame/controller/consister.go @@ -18,8 +18,6 @@ package controller import ( "context" - "crypto/md5" - "encoding/hex" "encoding/json" "fmt" "reflect" @@ -688,9 +686,13 @@ func (r *Consist) cleanEmployerCleanFinalizer(ctx context.Context, employer clie alreadyDeleted := true var finalizers []string - cleanFlz := generateCleanFlz(employer) + oldCleanFlz := generateOldCleanFlz(employer) for _, flz := range employer.GetFinalizers() { - if flz == cleanFlz { + if flz == oldCleanFlz { + alreadyDeleted = false + continue + } + if flz == cleanFinalizer { alreadyDeleted = false continue } @@ -898,22 +900,23 @@ func (r *Consist) ensureEmployerCleanFlz(ctx context.Context, employer client.Ob if !employer.GetDeletionTimestamp().IsZero() { return false, nil } + var finalizers []string for _, flz := range employer.GetFinalizers() { - if flz == generateCleanFlz(employer) { + if flz == cleanFinalizer { return false, nil } + if flz == generateOldCleanFlz(employer) { + continue + } + finalizers = append(finalizers, flz) } - employer.SetFinalizers(append(employer.GetFinalizers(), generateCleanFlz(employer))) + employer.SetFinalizers(append(finalizers, cleanFinalizer)) if _, ok := r.adapter.(MultiClusterOptions); ok { return true, r.Client.Update(clusterinfo.WithCluster(ctx, clusterinfo.Fed), employer) } return true, r.Client.Update(ctx, employer) } -func generateCleanFlz(employer client.Object) string { - if len(employer.GetName()) > 57 { - b := md5.Sum([]byte(employer.GetName())) - return cleanFinalizerPrefix + hex.EncodeToString(b[:])[8:24] - } +func generateOldCleanFlz(employer client.Object) string { return cleanFinalizerPrefix + employer.GetName() } diff --git a/pkg/frame/controller/consts.go b/pkg/frame/controller/consts.go index 51d8f17..5ea9bf2 100644 --- a/pkg/frame/controller/consts.go +++ b/pkg/frame/controller/consts.go @@ -20,7 +20,9 @@ const ( defaultMaxConcurrentReconciles = 5 expectedFinalizerAddedAnnoKey = "resource-consist.kusionstack.io/employees-expected-finalizer-added" lifecycleFinalizerRecordedAnnoKey = "resource-consist.kusionstack.io/employees-lifecycle-finalizer-recorded" - cleanFinalizerPrefix = "resource-consist.kusionstack.io/clean-" + // cleanFinalizerPrefix would be deprecated in the future + cleanFinalizerPrefix = "resource-consist.kusionstack.io/clean-" + cleanFinalizer = "resource-consist.kusionstack.io/clean-finalizer" ) // Event reason list diff --git a/pkg/frame/controller/resourceconsit_controller_test.go b/pkg/frame/controller/resourceconsit_controller_test.go index dcfa3e5..4bf365e 100644 --- a/pkg/frame/controller/resourceconsit_controller_test.go +++ b/pkg/frame/controller/resourceconsit_controller_test.go @@ -59,11 +59,12 @@ var _ = Describe("resource-consist-controller", func() { Context("employer synced", func() { svc0 := corev1.Service{ ObjectMeta: v1.ObjectMeta{ - Name: "resource-consist-ut-svc-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + Name: "resource-consist-ut-svc", Namespace: "default", Labels: map[string]string{ v1alpha1.ControlledByKusionStackLabelKey: "true", }, + Finalizers: []string{cleanFinalizerPrefix + "resource-consist-ut-svc"}, }, Spec: corev1.ServiceSpec{ Ports: []corev1.ServicePort{ @@ -92,7 +93,12 @@ var _ = Describe("resource-consist-controller", func() { return false } for _, flz := range svcTmp.GetFinalizers() { - if flz == generateCleanFlz(&svc0) { + if flz == generateOldCleanFlz(&svcTmp) { + return false + } + } + for _, flz := range svcTmp.GetFinalizers() { + if flz == cleanFinalizer { return true } }