diff --git a/go.mod b/go.mod index 7a8b91e3e52..b25bda9594a 100644 --- a/go.mod +++ b/go.mod @@ -338,6 +338,8 @@ require ( replace github.com/cs3org/go-cs3apis => github.com/2403905/go-cs3apis v0.0.0-20230517122726-727045414fd1 +replace github.com/cs3org/reva/v2 => github.com/butonic/reva/v2 v2.0.0-20240123083806-e05e6fdc903c + // exclude the v2 line of go-sqlite3 which was released accidentally and prevents pulling in newer versions of go-sqlite3 // see https://github.com/mattn/go-sqlite3/issues/965 for more details exclude github.com/mattn/go-sqlite3 v2.0.3+incompatible diff --git a/go.sum b/go.sum index 78209221fdf..3b2fbbf07ce 100644 --- a/go.sum +++ b/go.sum @@ -790,6 +790,8 @@ github.com/bombsimon/logrusr/v3 v3.1.0/go.mod h1:PksPPgSFEL2I52pla2glgCyyd2OqOHA github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/butonic/reva/v2 v2.0.0-20240123083806-e05e6fdc903c h1:3ah6sTq7/ccT+ahy1uHcZbXeWObNwhNG/Nv2w+D7z8c= +github.com/butonic/reva/v2 v2.0.0-20240123083806-e05e6fdc903c/go.mod h1:sM0lvdslykbpNWOHaO1gJpoS2qFF0rMjmikxyTwYabQ= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA= github.com/c-bata/go-prompt v0.2.5/go.mod h1:vFnjEGDIIA/Lib7giyE4E9c50Lvl8j0S+7FVlAwDAVw= @@ -864,8 +866,6 @@ github.com/crewjam/httperr v0.2.0 h1:b2BfXR8U3AlIHwNeFFvZ+BV1LFvKLlzMjzaTnZMybNo github.com/crewjam/httperr v0.2.0/go.mod h1:Jlz+Sg/XqBQhyMjdDiC+GNNRzZTD7x39Gu3pglZ5oH4= github.com/crewjam/saml v0.4.13 h1:TYHggH/hwP7eArqiXSJUvtOPNzQDyQ7vwmwEqlFWhMc= github.com/crewjam/saml v0.4.13/go.mod h1:igEejV+fihTIlHXYP8zOec3V5A8y3lws5bQBFsTm4gA= -github.com/cs3org/reva/v2 v2.16.4-0.20231220070538-82b93f6a66bc h1:IvoFfeOCbd8jFr7cXPuj9lt8aJjd4jLMhfZaoilpsNQ= -github.com/cs3org/reva/v2 v2.16.4-0.20231220070538-82b93f6a66bc/go.mod h1:RvhuweTFqzezjUFU0SIdTXakrEx9vJlMvQ7znPXSP1g= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= diff --git a/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/decomposedfs.go b/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/decomposedfs.go index 5c341c73570..78defda1876 100644 --- a/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/decomposedfs.go +++ b/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/decomposedfs.go @@ -252,6 +252,7 @@ func (fs *Decomposedfs) Postprocessing(ch <-chan events.Event) { failed bool keepUpload bool ) + unmarkPostprocessing := true n, err := node.ReadNode(ctx, fs.lu, up.Info.Storage["SpaceRoot"], up.Info.Storage["NodeId"], false, nil, true) if err != nil { @@ -270,8 +271,10 @@ func (fs *Decomposedfs) Postprocessing(ch <-chan events.Event) { case events.PPOutcomeContinue: if err := up.Finalize(); err != nil { log.Error().Err(err).Str("uploadID", ev.UploadID).Msg("could not finalize upload") - keepUpload = true // should we keep the upload when assembling failed? failed = true + keepUpload = true + // keep postprocessing status so the upload is not deleted during housekeeping + unmarkPostprocessing = false } case events.PPOutcomeDelete: failed = true @@ -300,7 +303,7 @@ func (fs *Decomposedfs) Postprocessing(ch <-chan events.Event) { } } - upload.Cleanup(up, failed, keepUpload) + upload.Cleanup(up, failed, keepUpload, unmarkPostprocessing) // remove cache entry in gateway fs.cache.RemoveStatContext(ctx, ev.ExecutingUser.GetId(), &provider.ResourceId{SpaceId: n.SpaceID, OpaqueId: n.ID}) diff --git a/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/upload/upload.go b/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/upload/upload.go index 89e4ab65973..3bb739170f0 100644 --- a/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/upload/upload.go +++ b/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/upload/upload.go @@ -132,15 +132,17 @@ func buildUpload(ctx context.Context, info tusd.FileInfo, binPath string, infoPa } // Cleanup cleans the upload -func Cleanup(upload *Upload, failure bool, keepUpload bool) { +func Cleanup(upload *Upload, revertNodeMetadata, keepUpload, unmarkPostprocessing bool) { ctx, span := tracer.Start(upload.Ctx, "Cleanup") defer span.End() - upload.cleanup(failure, !keepUpload, !keepUpload) + upload.cleanup(revertNodeMetadata, !keepUpload, !keepUpload) - // unset processing status - if upload.Node != nil { // node can be nil when there was an error before it was created (eg. checksum-mismatch) - if err := upload.Node.UnmarkProcessing(ctx, upload.Info.ID); err != nil { - upload.log.Info().Str("path", upload.Node.InternalPath()).Err(err).Msg("unmarking processing failed") + if unmarkPostprocessing { + // unset processing status + if upload.Node != nil { // node can be nil when there was an error before it was created (eg. checksum-mismatch) + if err := upload.Node.UnmarkProcessing(ctx, upload.Info.ID); err != nil { + upload.log.Info().Str("path", upload.Node.InternalPath()).Err(err).Msg("unmarking processing failed") + } } } } @@ -247,7 +249,7 @@ func (upload *Upload) FinishUpload(_ context.Context) error { err = errtypes.BadRequest("unsupported checksum algorithm: " + parts[0]) } if err != nil { - Cleanup(upload, true, false) + Cleanup(upload, true, false, false) return err } } @@ -261,7 +263,7 @@ func (upload *Upload) FinishUpload(_ context.Context) error { n, err := CreateNodeForUpload(upload, attrs) if err != nil { - Cleanup(upload, true, false) + Cleanup(upload, true, false, false) return err } @@ -290,7 +292,7 @@ func (upload *Upload) FinishUpload(_ context.Context) error { if !upload.async { // handle postprocessing synchronously err = upload.Finalize() - Cleanup(upload, err != nil, false) + Cleanup(upload, err != nil, false, err == nil) if err != nil { log.Error().Err(err).Msg("failed to upload") return err @@ -382,8 +384,8 @@ func (upload *Upload) checkHash(expected string, h hash.Hash) error { } // cleanup cleans up after the upload is finished -func (upload *Upload) cleanup(cleanNode, cleanBin, cleanInfo bool) { - if cleanNode && upload.Node != nil { +func (upload *Upload) cleanup(revertNodeMetadata, cleanBin, cleanInfo bool) { + if revertNodeMetadata && upload.Node != nil { switch p := upload.versionsPath; p { case "": // remove node diff --git a/vendor/modules.txt b/vendor/modules.txt index 7bfe93b98df..08ec035dcff 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -354,7 +354,7 @@ github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1 github.com/cs3org/go-cs3apis/cs3/storage/registry/v1beta1 github.com/cs3org/go-cs3apis/cs3/tx/v1beta1 github.com/cs3org/go-cs3apis/cs3/types/v1beta1 -# github.com/cs3org/reva/v2 v2.16.4-0.20231220070538-82b93f6a66bc +# github.com/cs3org/reva/v2 v2.16.4-0.20231220070538-82b93f6a66bc => github.com/butonic/reva/v2 v2.0.0-20240123083806-e05e6fdc903c ## explicit; go 1.20 github.com/cs3org/reva/v2/cmd/revad/internal/grace github.com/cs3org/reva/v2/cmd/revad/runtime @@ -2209,3 +2209,4 @@ stash.kopano.io/kgol/oidc-go ## explicit; go 1.13 stash.kopano.io/kgol/rndm # github.com/cs3org/go-cs3apis => github.com/2403905/go-cs3apis v0.0.0-20230517122726-727045414fd1 +# github.com/cs3org/reva/v2 => github.com/butonic/reva/v2 v2.0.0-20240123083806-e05e6fdc903c