From c8758410bfd139c61cbdf7db93013ede40d37a4d Mon Sep 17 00:00:00 2001 From: Pierangelo Di Pilato Date: Mon, 31 Jul 2023 12:01:22 +0200 Subject: [PATCH 1/3] Global resync brokers on config-features changes Signed-off-by: Pierangelo Di Pilato --- pkg/reconciler/broker/controller.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/reconciler/broker/controller.go b/pkg/reconciler/broker/controller.go index d445cc095cf..cda406b6252 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 grCb func(obj interface{}) + + featureStore := feature.NewStore(logging.FromContext(ctx).Named("feature-config-store"), func(name string, value interface{}) { + if grCb != nil { + grCb(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{}) { + grCb = 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") From d86b68122228dd624521702d9476f284266c6a02 Mon Sep 17 00:00:00 2001 From: Pierangelo Di Pilato Date: Tue, 1 Aug 2023 17:19:07 +0200 Subject: [PATCH 2/3] Global Resync --- pkg/reconciler/broker/controller.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/reconciler/broker/controller.go b/pkg/reconciler/broker/controller.go index cda406b6252..27566461e64 100644 --- a/pkg/reconciler/broker/controller.go +++ b/pkg/reconciler/broker/controller.go @@ -69,11 +69,11 @@ func NewController( configmapInformer := configmapinformer.Get(ctx) secretInformer := secretinformer.Get(ctx) - var grCb func(obj interface{}) + var globalResync func(obj interface{}) featureStore := feature.NewStore(logging.FromContext(ctx).Named("feature-config-store"), func(name string, value interface{}) { - if grCb != nil { - grCb(nil) + if globalResync != nil { + globalResync(nil) } }) featureStore.WatchConfigs(cmw) @@ -118,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") From 60ffc7e833a693cc175c66961502ece96378f7f8 Mon Sep 17 00:00:00 2001 From: Pierangelo Di Pilato Date: Tue, 1 Aug 2023 17:26:21 +0200 Subject: [PATCH 3/3] Never use the UI to make edits ... --- pkg/reconciler/broker/controller.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/reconciler/broker/controller.go b/pkg/reconciler/broker/controller.go index 27566461e64..1e946b8846b 100644 --- a/pkg/reconciler/broker/controller.go +++ b/pkg/reconciler/broker/controller.go @@ -129,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