From f130c30b421d6caedde5466479cf32b067796bf0 Mon Sep 17 00:00:00 2001 From: kaiyou <dev@kaiyou.fr> Date: Sun, 26 Feb 2023 22:57:06 +0100 Subject: [PATCH] Start informers and event broadcast *after* initializing the scheduler to avoid races --- services/k8s.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/services/k8s.go b/services/k8s.go index 1ccb9db..7b62c6e 100644 --- a/services/k8s.go +++ b/services/k8s.go @@ -162,15 +162,10 @@ var kubeScheduler = &Unit{ u.Logger.Info("preparing scheduler informers") // Setup scheduler dependencies broadcaster := events.NewEventBroadcasterAdapter(eventsClient) - broadcaster.StartRecordingToSink(ctx.Done()) informers := scheduler.NewInformerFactory(client, 0) - informers.Start(ctx.Done()) dynInformers := dynamicinformer.NewFilteredDynamicSharedInformerFactory( dynamic.NewForConfigOrDie(kc), 0, core.NamespaceAll, nil, ) - dynInformers.Start(ctx.Done()) - informers.WaitForCacheSync(ctx.Done()) - dynInformers.WaitForCacheSync(ctx.Done()) // Start the scheduler itself u.Logger.Info("informers are ready, preparing the scheduler") sched, err := scheduler.New(client, informers, dynInformers, broadcaster.NewRecorder, ctx.Done(), @@ -180,6 +175,12 @@ var kubeScheduler = &Unit{ return err } u.Logger.Info("starting the scheduler") + broadcaster.StartRecordingToSink(ctx.Done()) + defer broadcaster.Shutdown() + informers.Start(ctx.Done()) + dynInformers.Start(ctx.Done()) + informers.WaitForCacheSync(ctx.Done()) + dynInformers.WaitForCacheSync(ctx.Done()) sched.Run(ctx) return nil }, -- GitLab