Skip to content

Commit

Permalink
nfd-master: proper shutdown of nfd api informers
Browse files Browse the repository at this point in the history
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.

(cherry picked from commit 2bb8a72)
  • Loading branch information
marquiz committed Aug 20, 2024
1 parent 77fb7be commit 335b305
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 3 deletions.
10 changes: 8 additions & 2 deletions pkg/nfd-master/nfd-api-controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,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() {
Expand All @@ -198,7 +201,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() {
Expand Down
2 changes: 1 addition & 1 deletion pkg/nfd-master/nfd-master.go
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ func (m *nfdMaster) Run() error {

// Update all nodes when the configuration changes
if m.nfdController != nil && nfdfeatures.NFDFeatureGate.Enabled(nfdfeatures.NodeFeatureAPI) && m.args.EnableNodeFeatureApi {
m.nfdController.updateAllNodesChan <- struct{}{}
m.nfdController.updateAllNodes()
}

case <-m.stop:
Expand Down

0 comments on commit 335b305

Please sign in to comment.