From 6ec06a5069e59b832ac405f385c23c24cdc4bdac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Fri, 26 Jan 2024 12:05:13 +0100 Subject: [PATCH] distinguish failure and node metadata reversal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- .../distinguish-failure-and-node-metadata-reversal.md | 5 +++++ pkg/storage/utils/decomposedfs/decomposedfs.go | 10 +++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 changelog/unreleased/distinguish-failure-and-node-metadata-reversal.md diff --git a/changelog/unreleased/distinguish-failure-and-node-metadata-reversal.md b/changelog/unreleased/distinguish-failure-and-node-metadata-reversal.md new file mode 100644 index 0000000000..c37495d5da --- /dev/null +++ b/changelog/unreleased/distinguish-failure-and-node-metadata-reversal.md @@ -0,0 +1,5 @@ +Bugfix: distinguish failure and node metadata reversal + +When the final blob move fails we must not remove the node metadata to be able to restart the postprocessing process. + +https://github.com/cs3org/reva/pull/4481 diff --git a/pkg/storage/utils/decomposedfs/decomposedfs.go b/pkg/storage/utils/decomposedfs/decomposedfs.go index 6e709dfad7..bedb629eeb 100644 --- a/pkg/storage/utils/decomposedfs/decomposedfs.go +++ b/pkg/storage/utils/decomposedfs/decomposedfs.go @@ -286,8 +286,9 @@ func (fs *Decomposedfs) Postprocessing(ch <-chan events.Event) { } var ( - failed bool - keepUpload bool + failed bool + revertNodeMetadata bool + keepUpload bool ) unmarkPostprocessing := true @@ -297,12 +298,14 @@ func (fs *Decomposedfs) Postprocessing(ch <-chan events.Event) { fallthrough case events.PPOutcomeAbort: failed = true + revertNodeMetadata = true keepUpload = true metrics.UploadSessionsAborted.Inc() case events.PPOutcomeContinue: if err := session.Finalize(); err != nil { log.Error().Err(err).Str("uploadID", ev.UploadID).Msg("could not finalize upload") failed = true + revertNodeMetadata = false keepUpload = true // keep postprocessing status so the upload is not deleted during housekeeping unmarkPostprocessing = false @@ -311,6 +314,7 @@ func (fs *Decomposedfs) Postprocessing(ch <-chan events.Event) { } case events.PPOutcomeDelete: failed = true + revertNodeMetadata = true metrics.UploadSessionsDeleted.Inc() } @@ -337,7 +341,7 @@ func (fs *Decomposedfs) Postprocessing(ch <-chan events.Event) { } } - fs.sessionStore.Cleanup(ctx, session, failed, keepUpload, unmarkPostprocessing) + fs.sessionStore.Cleanup(ctx, session, revertNodeMetadata, keepUpload, unmarkPostprocessing) // remove cache entry in gateway fs.cache.RemoveStatContext(ctx, ev.ExecutingUser.GetId(), &provider.ResourceId{SpaceId: n.SpaceID, OpaqueId: n.ID})