From 281bdec499d30c9194d0a085b94afe482ff55068 Mon Sep 17 00:00:00 2001 From: mblos Date: Mon, 11 May 2026 10:56:26 +0200 Subject: [PATCH 1/2] fix: start API server only after cache sync to prevent startup race --- cmd/manager/main.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cmd/manager/main.go b/cmd/manager/main.go index f49fb8a9f..96d5b4120 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -909,6 +909,10 @@ func main() { errchan := make(chan error) go func() { + if !mgr.GetCache().WaitForCacheSync(ctx) { + setupLog.Error(nil, "cache sync failed, not starting api server") + os.Exit(1) + } errchan <- func() error { setupLog.Info("starting api server", "address", ":8080") return httpext.ListenAndServeContext(ctx, ":8080", mux) From 3d0526c48770819d71a3419f20436d0c6cd446e0 Mon Sep 17 00:00:00 2001 From: mblos Date: Mon, 11 May 2026 14:53:09 +0200 Subject: [PATCH 2/2] fix --- cmd/manager/main.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cmd/manager/main.go b/cmd/manager/main.go index 96d5b4120..c5d5fa323 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -907,15 +907,17 @@ func main() { } } + signalCtx := ctrl.SetupSignalHandler() + errchan := make(chan error) go func() { - if !mgr.GetCache().WaitForCacheSync(ctx) { - setupLog.Error(nil, "cache sync failed, not starting api server") + if !mgr.GetCache().WaitForCacheSync(signalCtx) { + setupLog.Error(nil, "cache sync failed, exiting before starting api server") os.Exit(1) } errchan <- func() error { setupLog.Info("starting api server", "address", ":8080") - return httpext.ListenAndServeContext(ctx, ":8080", mux) + return httpext.ListenAndServeContext(signalCtx, ":8080", mux) }() }() go func() { @@ -926,7 +928,7 @@ func main() { }() setupLog.Info("starting manager") - if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil { + if err := mgr.Start(signalCtx); err != nil { setupLog.Error(err, "problem running manager") os.Exit(1) }