From b51a17138e2eec22575ea0d4eabf5ad12b7eb7dc Mon Sep 17 00:00:00 2001 From: Lyndon-Li Date: Thu, 1 Dec 2022 15:12:07 +0800 Subject: [PATCH 1/2] fix issue 5458 Signed-off-by: Lyndon-Li --- pkg/backup/item_backupper.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pkg/backup/item_backupper.go b/pkg/backup/item_backupper.go index aefbb85ce..da020eb0a 100644 --- a/pkg/backup/item_backupper.go +++ b/pkg/backup/item_backupper.go @@ -164,11 +164,6 @@ func (ib *itemBackupper) backupItem(logger logrus.FieldLogger, obj runtime.Unstr pvbVolumes = append(pvbVolumes, volume) } - - // track the volumes that are PVCs using the PVC snapshot tracker, so that when we backup PVCs/PVs - // via an item action in the next step, we don't snapshot PVs that will have their data backed up - // with pod volume backup. - ib.podVolumeSnapshotTracker.Track(pod, pvbVolumes) } } @@ -211,6 +206,13 @@ func (ib *itemBackupper) backupItem(logger logrus.FieldLogger, obj runtime.Unstr ib.backupRequest.PodVolumeBackups = append(ib.backupRequest.PodVolumeBackups, podVolumeBackups...) backupErrs = append(backupErrs, errs...) + + // track the volumes that are PVCs using the PVC snapshot tracker, so that when we backup PVCs/PVs + // via an item action in the next step, we don't snapshot PVs that will have their data backed up + // with pod volume backup. + for _, pvb := range podVolumeBackups { + ib.podVolumeSnapshotTracker.Track(pod, []string{pvb.Spec.Volume}) + } } log.Debug("Executing post hooks") From 2574229fb04c716495c5f5091e95cf1bf0276c4a Mon Sep 17 00:00:00 2001 From: Lyndon-Li Date: Mon, 16 Jan 2023 17:54:07 +0800 Subject: [PATCH 2/2] add change log for 5769 Signed-off-by: Lyndon-Li --- changelogs/unreleased/5769-Lyndon-Li | 1 + pkg/backup/backup_test.go | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) create mode 100644 changelogs/unreleased/5769-Lyndon-Li diff --git a/changelogs/unreleased/5769-Lyndon-Li b/changelogs/unreleased/5769-Lyndon-Li new file mode 100644 index 000000000..448af0f8d --- /dev/null +++ b/changelogs/unreleased/5769-Lyndon-Li @@ -0,0 +1 @@ +Fix issue 5458, track pod volume backup until the CR is submitted in case it is skipped half way \ No newline at end of file diff --git a/pkg/backup/backup_test.go b/pkg/backup/backup_test.go index aae4dfecd..24dacce5f 100644 --- a/pkg/backup/backup_test.go +++ b/pkg/backup/backup_test.go @@ -2625,7 +2625,7 @@ type fakePodVolumeBackupper struct{} func (b *fakePodVolumeBackupper) BackupPodVolumes(backup *velerov1.Backup, pod *corev1.Pod, volumes []string, _ logrus.FieldLogger) ([]*velerov1.PodVolumeBackup, []error) { var res []*velerov1.PodVolumeBackup for _, vol := range volumes { - pvb := builder.ForPodVolumeBackup("velero", fmt.Sprintf("pvb-%s-%s-%s", pod.Namespace, pod.Name, vol)).Result() + pvb := builder.ForPodVolumeBackup("velero", fmt.Sprintf("pvb-%s-%s-%s", pod.Namespace, pod.Name, vol)).Volume(vol).Result() res = append(res, pvb) } @@ -2654,7 +2654,7 @@ func TestBackupWithPodVolume(t *testing.T) { ), }, want: []*velerov1.PodVolumeBackup{ - builder.ForPodVolumeBackup("velero", "pvb-ns-1-pod-1-foo").Result(), + builder.ForPodVolumeBackup("velero", "pvb-ns-1-pod-1-foo").Volume("foo").Result(), }, }, { @@ -2675,7 +2675,7 @@ func TestBackupWithPodVolume(t *testing.T) { ), }, want: []*velerov1.PodVolumeBackup{ - builder.ForPodVolumeBackup("velero", "pvb-ns-1-pod-1-foo").Result(), + builder.ForPodVolumeBackup("velero", "pvb-ns-1-pod-1-foo").Volume("foo").Result(), }, }, { @@ -2710,8 +2710,8 @@ func TestBackupWithPodVolume(t *testing.T) { WithVolume("pv-2", "vol-2", "", "type-1", 100, false), }, want: []*velerov1.PodVolumeBackup{ - builder.ForPodVolumeBackup("velero", "pvb-ns-1-pod-1-vol-1").Result(), - builder.ForPodVolumeBackup("velero", "pvb-ns-1-pod-1-vol-2").Result(), + builder.ForPodVolumeBackup("velero", "pvb-ns-1-pod-1-vol-1").Volume("vol-1").Result(), + builder.ForPodVolumeBackup("velero", "pvb-ns-1-pod-1-vol-2").Volume("vol-2").Result(), }, }, }