From 81e680e6d982036de7a75d11101fde57b61e94a5 Mon Sep 17 00:00:00 2001 From: Antonio Ojea Date: Thu, 31 Jul 2025 10:58:40 +0000 Subject: [PATCH] defaultservicecidr controller no shutdown eventbroadcaster on start The defaultservicecidr controller runs as an apiserver PostStartHook hence can not block the startup. The logic of the controller was copied from the common boilerplate and was assuming the controller blocked on start, hence defering the shutdown of the eventbroadcaster. Only shutdown the eventbroadcaster when the context is done. Change-Id: I70426d5550afe3b12ab5ea68746238dd96f7db52 --- .../defaultservicecidr/default_servicecidr_controller.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkg/controlplane/controller/defaultservicecidr/default_servicecidr_controller.go b/pkg/controlplane/controller/defaultservicecidr/default_servicecidr_controller.go index 6d0bb0a0b89..0cc5d71e098 100644 --- a/pkg/controlplane/controller/defaultservicecidr/default_servicecidr_controller.go +++ b/pkg/controlplane/controller/defaultservicecidr/default_servicecidr_controller.go @@ -106,10 +106,13 @@ func (c *Controller) Start(ctx context.Context) { c.eventRecorder = c.eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: controllerName}) c.eventBroadcaster.StartStructuredLogging(0) c.eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: c.client.CoreV1().Events("")}) - defer c.eventBroadcaster.Shutdown() klog.Infof("Starting %s", controllerName) - defer klog.Infof("Shutting down %s", controllerName) + go func() { + <-ctx.Done() + klog.Infof("Shutting down %s", controllerName) + c.eventBroadcaster.Shutdown() + }() go c.serviceCIDRInformer.Run(stopCh) if !cache.WaitForNamedCacheSync(controllerName, stopCh, c.serviceCIDRsSynced) {