From d5089e621f679c511ca4738fdd67a606465f3adc Mon Sep 17 00:00:00 2001 From: Lyndon-Li Date: Tue, 30 Jun 2026 11:47:01 +0800 Subject: [PATCH 1/2] fix contest of nodeAgentCheck when restorer is called concurrently Signed-off-by: Lyndon-Li --- pkg/podvolume/restorer.go | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/pkg/podvolume/restorer.go b/pkg/podvolume/restorer.go index bac22298e..cd6533ac5 100644 --- a/pkg/podvolume/restorer.go +++ b/pkg/podvolume/restorer.go @@ -63,10 +63,9 @@ type restorer struct { kubeClient kubernetes.Interface crClient ctrlclient.Client - resultsLock sync.Mutex - results map[string]chan *velerov1api.PodVolumeRestore - nodeAgentCheck chan error - log logrus.FieldLogger + resultsLock sync.Mutex + results map[string]chan *velerov1api.PodVolumeRestore + log logrus.FieldLogger } func newRestorer( @@ -153,7 +152,7 @@ func (r *restorer) RestorePodVolumes(data RestoreData, tracker *volume.RestoreVo r.results[resultsKey(data.Pod.Namespace, data.Pod.Name)] = resultsChan r.resultsLock.Unlock() - r.nodeAgentCheck = make(chan error) + nodeAgentCheck := make(chan error) var ( errs []error @@ -217,7 +216,7 @@ func (r *restorer) RestorePodVolumes(data RestoreData, tracker *volume.RestoreVo err = nodeagent.IsRunningInNode(checkCtx, data.Restore.Namespace, nodeName, r.crClient) if err != nil { r.log.WithField("node", nodeName).WithError(err).Error("node-agent pod is not running in node, abort the restore") - r.nodeAgentCheck <- errors.Wrapf(err, "node-agent pod is not running in node %s", nodeName) + nodeAgentCheck <- errors.Wrapf(err, "node-agent pod is not running in node %s", nodeName) } } }() @@ -235,7 +234,7 @@ ForEachVolume: errs = append(errs, errors.Errorf("pod volume restore canceled: %s", res.Status.Message)) } tracker.TrackPodVolume(res) - case err := <-r.nodeAgentCheck: + case err := <-nodeAgentCheck: errs = append(errs, err) break ForEachVolume } From 5dd0b9e8493a3d61e070769bc63bed932b47b795 Mon Sep 17 00:00:00 2001 From: Lyndon-Li Date: Wed, 12 Aug 2026 22:49:21 +0800 Subject: [PATCH 2/2] fix node-agent check contest Signed-off-by: Lyndon-Li --- changelogs/unreleased/10251-Lyndon-Li | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelogs/unreleased/10251-Lyndon-Li diff --git a/changelogs/unreleased/10251-Lyndon-Li b/changelogs/unreleased/10251-Lyndon-Li new file mode 100644 index 000000000..6aead3879 --- /dev/null +++ b/changelogs/unreleased/10251-Lyndon-Li @@ -0,0 +1 @@ +Fix wrong node-agent check result when PVR restorer run concurrently \ No newline at end of file