Fix event broadcaster shutdown in multiple controllers

This commit is contained in:
Wojciech Tyczyński
2022-05-17 14:48:01 +02:00
parent 81261d4693
commit 11b679c66a
7 changed files with 61 additions and 40 deletions

View File

@@ -74,6 +74,8 @@ type StatefulSetController struct {
revListerSynced cache.InformerSynced
// StatefulSets that need to be synced.
queue workqueue.RateLimitingInterface
// eventBroadcaster is the core of event processing pipeline.
eventBroadcaster record.EventBroadcaster
}
// NewStatefulSetController creates a new statefulset controller.
@@ -85,8 +87,6 @@ func NewStatefulSetController(
kubeClient clientset.Interface,
) *StatefulSetController {
eventBroadcaster := record.NewBroadcaster()
eventBroadcaster.StartStructuredLogging(0)
eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: kubeClient.CoreV1().Events("")})
recorder := eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: "statefulset-controller"})
ssc := &StatefulSetController{
kubeClient: kubeClient,
@@ -101,10 +101,11 @@ func NewStatefulSetController(
recorder,
),
pvcListerSynced: pvcInformer.Informer().HasSynced,
revListerSynced: revInformer.Informer().HasSynced,
queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "statefulset"),
podControl: controller.RealPodControl{KubeClient: kubeClient, Recorder: recorder},
revListerSynced: revInformer.Informer().HasSynced,
eventBroadcaster: eventBroadcaster,
}
podInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
@@ -142,6 +143,12 @@ func NewStatefulSetController(
// Run runs the statefulset controller.
func (ssc *StatefulSetController) Run(ctx context.Context, workers int) {
defer utilruntime.HandleCrash()
// Start events processing pipeline.
ssc.eventBroadcaster.StartStructuredLogging(0)
ssc.eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: ssc.kubeClient.CoreV1().Events("")})
defer ssc.eventBroadcaster.Shutdown()
defer ssc.queue.ShutDown()
klog.Infof("Starting stateful set controller")