Merge pull request #10251 from Lyndon-Li/pvr-restorer-could-run-concurrently

Fix wrong node-agent check result when PVR restorer run concurrently
This commit is contained in:
Chlins Zhang
2026-08-13 11:20:37 +08:00
committed by GitHub
2 changed files with 7 additions and 7 deletions
+1
View File
@@ -0,0 +1 @@
Fix wrong node-agent check result when PVR restorer run concurrently
+6 -7
View File
@@ -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
}