diff --git a/changelogs/unreleased/6188-Lyndon-Li b/changelogs/unreleased/6188-Lyndon-Li new file mode 100644 index 0000000000..fb3999f085 --- /dev/null +++ b/changelogs/unreleased/6188-Lyndon-Li @@ -0,0 +1 @@ +Fix issue #6182. If pod is not running, don't treat it as an error, let it go and leave a warning. \ No newline at end of file diff --git a/pkg/podvolume/backupper.go b/pkg/podvolume/backupper.go index 2bd1a0b1c4..4def12ba67 100644 --- a/pkg/podvolume/backupper.go +++ b/pkg/podvolume/backupper.go @@ -115,23 +115,28 @@ func (b *backupper) BackupPodVolumes(backup *velerov1api.Backup, pod *corev1api. return nil, nil } - repositoryType := getRepositoryType(b.uploaderType) - if repositoryType == "" { - err := errors.Errorf("empty repository type, uploader %s", b.uploaderType) - return nil, []error{err} + err := kube.IsPodRunning(pod) + if err != nil { + for _, volumeName := range volumesToBackup { + err = errors.Wrapf(err, "backup for volume %s is skipped", volumeName) + log.WithError(err).Warn("Skip pod volume") + } + + return nil, nil } - repo, err := b.repoEnsurer.EnsureRepo(b.ctx, backup.Namespace, pod.Namespace, backup.Spec.StorageLocation, repositoryType) + err = nodeagent.IsRunningInNode(b.ctx, backup.Namespace, pod.Spec.NodeName, b.podClient) if err != nil { return nil, []error{err} } - err = kube.IsPodRunning(pod) - if err != nil { + repositoryType := getRepositoryType(b.uploaderType) + if repositoryType == "" { + err := errors.Errorf("empty repository type, uploader %s", b.uploaderType) return nil, []error{err} } - err = nodeagent.IsRunningInNode(b.ctx, backup.Namespace, pod.Spec.NodeName, b.podClient) + repo, err := b.repoEnsurer.EnsureRepo(b.ctx, backup.Namespace, pod.Namespace, backup.Spec.StorageLocation, repositoryType) if err != nil { return nil, []error{err} }