diff --git a/pkg/frame/controller/consister.go b/pkg/frame/controller/consister.go index 29c4029..7c99d7c 100644 --- a/pkg/frame/controller/consister.go +++ b/pkg/frame/controller/consister.go @@ -18,6 +18,8 @@ package controller import ( "context" + "crypto/md5" + "encoding/hex" "encoding/json" "fmt" "reflect" @@ -686,7 +688,7 @@ func (r *Consist) cleanEmployerCleanFinalizer(ctx context.Context, employer clie alreadyDeleted := true var finalizers []string - cleanFlz := cleanFinalizerPrefix + employer.GetName() + cleanFlz := generateCleanFlz(employer) for _, flz := range employer.GetFinalizers() { if flz == cleanFlz { alreadyDeleted = false @@ -897,13 +899,21 @@ func (r *Consist) ensureEmployerCleanFlz(ctx context.Context, employer client.Ob return false, nil } for _, flz := range employer.GetFinalizers() { - if flz == cleanFinalizerPrefix+employer.GetName() { + if flz == generateCleanFlz(employer) { return false, nil } } - employer.SetFinalizers(append(employer.GetFinalizers(), cleanFinalizerPrefix+employer.GetName())) + employer.SetFinalizers(append(employer.GetFinalizers(), generateCleanFlz(employer))) 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] + } + return cleanFinalizerPrefix + employer.GetName() +} diff --git a/pkg/frame/controller/resourceconsit_controller_test.go b/pkg/frame/controller/resourceconsit_controller_test.go index c4d7140..dcfa3e5 100644 --- a/pkg/frame/controller/resourceconsit_controller_test.go +++ b/pkg/frame/controller/resourceconsit_controller_test.go @@ -59,7 +59,7 @@ var _ = Describe("resource-consist-controller", func() { Context("employer synced", func() { svc0 := corev1.Service{ ObjectMeta: v1.ObjectMeta{ - Name: "resource-consist-ut-svc", + Name: "resource-consist-ut-svc-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", Namespace: "default", Labels: map[string]string{ v1alpha1.ControlledByKusionStackLabelKey: "true", @@ -92,7 +92,7 @@ var _ = Describe("resource-consist-controller", func() { return false } for _, flz := range svcTmp.GetFinalizers() { - if flz == cleanFinalizerPrefix+svc0.GetName() { + if flz == generateCleanFlz(&svc0) { return true } }