diff --git a/pkg/nfd-master/nfd-master.go b/pkg/nfd-master/nfd-master.go index 7b9dcce6c..f9d336758 100644 --- a/pkg/nfd-master/nfd-master.go +++ b/pkg/nfd-master/nfd-master.go @@ -442,7 +442,7 @@ func (m *nfdMaster) nfdAPIUpdateHandler() { } } else { for nodeName := range updateNodes { - m.nodeUpdaterPool.queue.Add(nodeName) + m.nodeUpdaterPool.addNode(nodeName) } } @@ -710,7 +710,7 @@ func (m *nfdMaster) nfdAPIUpdateAllNodes() error { } for _, node := range nodes.Items { - m.nodeUpdaterPool.queue.Add(node.Name) + m.nodeUpdaterPool.addNode(node.Name) } return nil diff --git a/pkg/nfd-master/node-updater-pool.go b/pkg/nfd-master/node-updater-pool.go index 99948cc5f..4ca03003d 100644 --- a/pkg/nfd-master/node-updater-pool.go +++ b/pkg/nfd-master/node-updater-pool.go @@ -28,7 +28,7 @@ import ( type nodeUpdaterPool struct { queue workqueue.RateLimitingInterface - sync.Mutex + sync.RWMutex wg sync.WaitGroup nfdMaster *nfdMaster @@ -114,3 +114,9 @@ func (u *nodeUpdaterPool) stop() { u.queue.ShutDown() u.wg.Wait() } + +func (u *nodeUpdaterPool) addNode(nodeName string) { + u.RLock() + defer u.RUnlock() + u.queue.Add(nodeName) +}