diff --git a/internal/grpc/services/publicstorageprovider/publicstorageprovider.go b/internal/grpc/services/publicstorageprovider/publicstorageprovider.go index c743372295d..114c674c955 100644 --- a/internal/grpc/services/publicstorageprovider/publicstorageprovider.go +++ b/internal/grpc/services/publicstorageprovider/publicstorageprovider.go @@ -315,6 +315,7 @@ func (s *service) InitiateFileUpload(ctx context.Context, req *provider.Initiate uReq := &provider.InitiateFileUploadRequest{ Ref: cs3Ref, Opaque: req.Opaque, + LockId: req.LockId, } gatewayClient, err := s.gatewaySelector.Next() diff --git a/pkg/ocm/storage/received/upload.go b/pkg/ocm/storage/received/upload.go index 05556ede47c..046a5fcc669 100644 --- a/pkg/ocm/storage/received/upload.go +++ b/pkg/ocm/storage/received/upload.go @@ -106,7 +106,8 @@ func (d *driver) Upload(ctx context.Context, req storage.UploadRequest, _ storag } }) - return &provider.ResourceInfo{}, client.WriteStream(rel, req.Body, 0) + locktoken, _ := ctxpkg.ContextGetLockID(ctx) + return &provider.ResourceInfo{}, client.WriteStream(rel, req.Body, 0, locktoken) } // UseIn tells the tus upload middleware which extensions it supports. @@ -356,7 +357,7 @@ func (u *upload) FinishUpload(ctx context.Context) error { return err } defer f.Close() - return client.WriteStream(rel, f, 0) + return client.WriteStream(rel, f, 0, "") } func (u *upload) Terminate(ctx context.Context) error { diff --git a/pkg/rhttp/datatx/manager/simple/simple.go b/pkg/rhttp/datatx/manager/simple/simple.go index 5074b3861d7..5cfec2ca4e0 100644 --- a/pkg/rhttp/datatx/manager/simple/simple.go +++ b/pkg/rhttp/datatx/manager/simple/simple.go @@ -24,6 +24,7 @@ import ( userpb "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1" provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1" + ctxpkg "github.com/cs3org/reva/v2/pkg/ctx" "github.com/mitchellh/mapstructure" "github.com/pkg/errors" "github.com/rs/zerolog" @@ -109,6 +110,10 @@ func (m *manager) Handler(fs storage.FS) (http.Handler, error) { ref := &provider.Reference{Path: fn} + if lockID := r.Header.Get("X-Lock-Id"); lockID != "" { + ctx = ctxpkg.ContextSetLockID(ctx, lockID) + } + info, err := fs.Upload(ctx, storage.UploadRequest{ Ref: ref, Body: r.Body,