From a7bd22a75b1051a34bcdd0f9ab2a60e1e178b7a2 Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Tue, 20 Feb 2024 10:08:45 +0200 Subject: [PATCH] nfd-master: check if node exists before trying update Make the node-updater-pool worker fail fast (and not retry updates) if a node does not exist. --- pkg/nfd-master/node-updater-pool.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/nfd-master/node-updater-pool.go b/pkg/nfd-master/node-updater-pool.go index 1bb81d87a..908b01a37 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,15 +42,20 @@ func newNodeUpdaterPool(nfdMaster *nfdMaster) *nodeUpdaterPool { } func (u *nodeUpdaterPool) processNodeUpdateRequest(queue workqueue.RateLimitingInterface) bool { - nodeName, quit := queue.Get() + n, quit := queue.Get() if quit { return false } + nodeName := n.(string) 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)