diff --git a/pkg/helper/helpers.go b/pkg/helper/helpers.go index 3e4f2c854..d3ca68a50 100644 --- a/pkg/helper/helpers.go +++ b/pkg/helper/helpers.go @@ -330,6 +330,14 @@ func AppliedManifestworkQueueKeyFunc(hubhash string) factory.ObjectQueueKeyFunc } } +// AppliedManifestworkHubHashFilter filter the appliedmanifestwork belonging to this hub +func AppliedManifestworkHubHashFilter(hubHash string) factory.EventFilterFunc { + return func(obj interface{}) bool { + accessor, _ := meta.Accessor(obj) + return strings.HasPrefix(accessor.GetName(), hubHash) + } +} + // HubHash returns a hash of hubserver // NOTE: the length of hash string is 64, meaning the length of manifestwork name should be less than 189 func HubHash(hubServer string) string { diff --git a/pkg/spoke/controllers/finalizercontroller/appliedmanifestwork_finalize_controller.go b/pkg/spoke/controllers/finalizercontroller/appliedmanifestwork_finalize_controller.go index d37e5a031..0399f4b74 100644 --- a/pkg/spoke/controllers/finalizercontroller/appliedmanifestwork_finalize_controller.go +++ b/pkg/spoke/controllers/finalizercontroller/appliedmanifestwork_finalize_controller.go @@ -36,6 +36,7 @@ func NewAppliedManifestWorkFinalizeController( spokeDynamicClient dynamic.Interface, appliedManifestWorkClient workv1client.AppliedManifestWorkInterface, appliedManifestWorkInformer workinformer.AppliedManifestWorkInformer, + hubHash string, ) factory.Controller { controller := &AppliedManifestWorkFinalizeController{ @@ -46,10 +47,10 @@ func NewAppliedManifestWorkFinalizeController( } return factory.New(). - WithInformersQueueKeyFunc(func(obj runtime.Object) string { + WithFilteredEventsInformersQueueKeyFunc(func(obj runtime.Object) string { accessor, _ := meta.Accessor(obj) return accessor.GetName() - }, appliedManifestWorkInformer.Informer()). + }, helper.AppliedManifestworkHubHashFilter(hubHash), appliedManifestWorkInformer.Informer()). WithSync(controller.sync).ToController("AppliedManifestWorkFinalizer", recorder) } diff --git a/pkg/spoke/spokeagent.go b/pkg/spoke/spokeagent.go index 950d7777e..f0f0a9950 100644 --- a/pkg/spoke/spokeagent.go +++ b/pkg/spoke/spokeagent.go @@ -128,6 +128,7 @@ func (o *WorkloadAgentOptions) RunWorkloadAgent(ctx context.Context, controllerC spokeDynamicClient, spokeWorkClient.WorkV1().AppliedManifestWorks(), spokeWorkInformerFactory.Work().V1().AppliedManifestWorks(), + hubhash, ) manifestWorkFinalizeController := finalizercontroller.NewManifestWorkFinalizeController( controllerContext.EventRecorder,