diff --git a/changelogs/unreleased/7247-Lyndon-Li b/changelogs/unreleased/7247-Lyndon-Li new file mode 100644 index 000000000..edb945ec3 --- /dev/null +++ b/changelogs/unreleased/7247-Lyndon-Li @@ -0,0 +1 @@ +Fix issue #7244. By the end of the upload, check the outstanding incomplete snapshots and delete them by calling ApplyRetentionPolicy \ No newline at end of file diff --git a/pkg/uploader/kopia/snapshot.go b/pkg/uploader/kopia/snapshot.go index d87404a36..cf6c2b80f 100644 --- a/pkg/uploader/kopia/snapshot.go +++ b/pkg/uploader/kopia/snapshot.go @@ -44,6 +44,7 @@ import ( ) // All function mainly used to make testing more convenient +var applyRetentionPolicyFunc = policy.ApplyRetentionPolicy var treeForSourceFunc = policy.TreeForSource var setPolicyFunc = policy.SetPolicy var saveSnapshotFunc = snapshot.SaveSnapshot @@ -277,6 +278,11 @@ func SnapshotSource( return "", 0, errors.Wrapf(err, "Failed to save kopia manifest %v", manifest.ID) } + _, err = applyRetentionPolicyFunc(ctx, rep, sourceInfo, true) + if err != nil { + return "", 0, errors.Wrapf(err, "Failed to apply kopia retention policy for si %v", sourceInfo) + } + if err = rep.Flush(ctx); err != nil { return "", 0, errors.Wrapf(err, "Failed to flush kopia repository") } diff --git a/pkg/uploader/kopia/snapshot_test.go b/pkg/uploader/kopia/snapshot_test.go index 34bc530b2..62c416029 100644 --- a/pkg/uploader/kopia/snapshot_test.go +++ b/pkg/uploader/kopia/snapshot_test.go @@ -60,6 +60,7 @@ func injectSnapshotFuncs() *snapshotMockes { repoWriterMock: &repomocks.RepositoryWriter{}, } + applyRetentionPolicyFunc = s.policyMock.ApplyRetentionPolicy setPolicyFunc = s.policyMock.SetPolicy treeForSourceFunc = s.policyMock.TreeForSource loadSnapshotFunc = s.snapshotMock.LoadSnapshot