Skip to content
Snippets Groups Projects
Commit f130c30b authored by kaiyou's avatar kaiyou
Browse files

Start informers and event broadcast *after* initializing the scheduler to avoid races

parent c1cc8271
No related branches found
No related tags found
No related merge requests found
Pipeline #24390 passed
......@@ -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
},
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment