From 1a5f37cdfa0b5ed0f79297acaf2097c71192b39f Mon Sep 17 00:00:00 2001 From: Knative Prow Robot Date: Wed, 2 Aug 2023 14:31:48 +0100 Subject: [PATCH] [release-1.11] Global resync brokers on config-features changes (#7134) This is an automated cherry-pick of #7126 --------- Signed-off-by: Pierangelo Di Pilato Co-authored-by: Pierangelo Di Pilato --- pkg/reconciler/broker/controller.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pkg/reconciler/broker/controller.go b/pkg/reconciler/broker/controller.go index d445cc095cf..1e946b8846b 100644 --- a/pkg/reconciler/broker/controller.go +++ b/pkg/reconciler/broker/controller.go @@ -69,7 +69,13 @@ func NewController( configmapInformer := configmapinformer.Get(ctx) secretInformer := secretinformer.Get(ctx) - featureStore := feature.NewStore(logging.FromContext(ctx).Named("feature-config-store")) + var globalResync func(obj interface{}) + + featureStore := feature.NewStore(logging.FromContext(ctx).Named("feature-config-store"), func(name string, value interface{}) { + if globalResync != nil { + globalResync(nil) + } + }) featureStore.WatchConfigs(cmw) var err error @@ -112,7 +118,7 @@ func NewController( // When the endpoints in our multi-tenant filter/ingress change, do a global resync. // During installation, we might reconcile Brokers before our shared filter/ingress is // ready, so when these endpoints change perform a global resync. - grCb := func(obj interface{}) { + globalResync = func(obj interface{}) { // Since changes in the Filter/Ingress Service endpoints affect all the Broker objects, // do a global resync. logger.Info("Doing a global resync due to endpoint changes in shared broker component") @@ -123,18 +129,18 @@ func NewController( FilterFunc: pkgreconciler.ChainFilterFuncs( pkgreconciler.NamespaceFilterFunc(system.Namespace()), pkgreconciler.NameFilterFunc(names.BrokerFilterName)), - Handler: controller.HandleAll(grCb), + Handler: controller.HandleAll(globalResync), }) // Resync for the ingress. endpointsInformer.Informer().AddEventHandler(cache.FilteringResourceEventHandler{ FilterFunc: pkgreconciler.ChainFilterFuncs( pkgreconciler.NamespaceFilterFunc(system.Namespace()), pkgreconciler.NameFilterFunc(names.BrokerIngressName)), - Handler: controller.HandleAll(grCb), + Handler: controller.HandleAll(globalResync), }) secretInformer.Informer().AddEventHandler(cache.FilteringResourceEventHandler{ FilterFunc: controller.FilterWithName(ingressServerTLSSecretName), - Handler: controller.HandleAll(grCb), + Handler: controller.HandleAll(globalResync), }) return impl