diff --git a/pkg/nfd-master/node-updater-pool.go b/pkg/nfd-master/node-updater-pool.go index 1bb81d87a2..a97ab1c8e8 100644 --- a/pkg/nfd-master/node-updater-pool.go +++ b/pkg/nfd-master/node-updater-pool.go @@ -21,6 +21,7 @@ import ( "time" "golang.org/x/time/rate" + apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/client-go/util/workqueue" "k8s.io/klog/v2" ) @@ -41,7 +42,8 @@ func newNodeUpdaterPool(nfdMaster *nfdMaster) *nodeUpdaterPool { } func (u *nodeUpdaterPool) processNodeUpdateRequest(queue workqueue.RateLimitingInterface) bool { - nodeName, quit := queue.Get() + n, quit := queue.Get() + nodeName := n.(string) if quit { return false } @@ -49,7 +51,11 @@ func (u *nodeUpdaterPool) processNodeUpdateRequest(queue workqueue.RateLimitingI defer queue.Done(nodeName) nodeUpdateRequests.Inc() - if err := u.nfdMaster.nfdAPIUpdateOneNode(nodeName.(string)); err != nil { + + // Check if node exists + if _, err := u.nfdMaster.getNode(nodeName); apierrors.IsNotFound(err) { + klog.InfoS("node not found, skip update", "nodeName", nodeName) + } else if err := u.nfdMaster.nfdAPIUpdateOneNode(nodeName); err != nil { if queue.NumRequeues(nodeName) < 15 { klog.InfoS("retrying node update", "nodeName", nodeName, "lastError", err) queue.AddRateLimited(nodeName)