diff --git a/pkg/nfd-master/nfd-api-controller.go b/pkg/nfd-master/nfd-api-controller.go index 18eacb241..3c1ae1e22 100644 --- a/pkg/nfd-master/nfd-api-controller.go +++ b/pkg/nfd-master/nfd-api-controller.go @@ -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() { @@ -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() { diff --git a/pkg/nfd-master/nfd-master.go b/pkg/nfd-master/nfd-master.go index 64bf5c680..a9b4ae76f 100644 --- a/pkg/nfd-master/nfd-master.go +++ b/pkg/nfd-master/nfd-master.go @@ -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: