1
0
Fork 0
mirror of https://github.com/kubernetes-sigs/node-feature-discovery.git synced 2024-12-14 11:57:51 +00:00

nfd-master: proper shutdown of nfd api informers

Stop blocking on event channels when the api controller is stopped.
Ensures that the nfd API informer factory is properly shut down and all
resources released when stop() is called. This eliminates a memory leak
on re-configure events when leader election is enabled.
This commit is contained in:
Markus Lehtonen 2024-08-20 11:32:12 +03:00
parent 5a5b9e3c19
commit 2bb8a72532
2 changed files with 9 additions and 3 deletions

View file

@ -206,7 +206,10 @@ func (c *nfdController) updateOneNode(typ string, obj metav1.Object) {
klog.ErrorS(err, "failed to determine node name for object", "type", typ, "object", klog.KObj(obj))
return
}
c.updateOneNodeChan <- nodeName
select {
case c.updateOneNodeChan <- nodeName:
case <-c.stopChan:
}
}
func (c *nfdController) updateAllNodes() {
@ -217,7 +220,10 @@ func (c *nfdController) updateAllNodes() {
}
func (c *nfdController) updateNodeFeatureGroup(nodeFeatureGroup string) {
c.updateNodeFeatureGroupChan <- nodeFeatureGroup
select {
case c.updateNodeFeatureGroupChan <- nodeFeatureGroup:
case <-c.stopChan:
}
}
func (c *nfdController) updateAllNodeFeatureGroups() {

View file

@ -392,7 +392,7 @@ func (m *nfdMaster) Run() error {
// Update all nodes when the configuration changes
if m.nfdController != nil && nfdfeatures.NFDFeatureGate.Enabled(nfdfeatures.NodeFeatureAPI) {
m.nfdController.updateAllNodesChan <- struct{}{}
m.nfdController.updateAllNodes()
}
case <-m.stop: