From a78f77b5c1b12fa845d3334f5e44d7999ac3885d Mon Sep 17 00:00:00 2001 From: Jesse Geens Date: Fri, 22 Nov 2024 14:07:08 +0100 Subject: [PATCH] Fixed bug where uploads fail due to using cbox as the account used for Statting. Instead we use the user now --- changelog/unreleased/fix-failing-stat.md | 5 +++++ pkg/storage/utils/eosfs/eosfs.go | 9 ++++----- 2 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 changelog/unreleased/fix-failing-stat.md diff --git a/changelog/unreleased/fix-failing-stat.md b/changelog/unreleased/fix-failing-stat.md new file mode 100644 index 0000000000..fbacb5c428 --- /dev/null +++ b/changelog/unreleased/fix-failing-stat.md @@ -0,0 +1,5 @@ +Bugfix: make uploads over gRPC work + +Uploads would return a 500 error, even though they succeeded, due to a failed Stat after an upload. The Stat failed because it was executed as cbox, which no longer has access to user files. This is fixed by using the user's auth now instead. + +https://github.com/cs3org/reva/pull/4969 \ No newline at end of file diff --git a/pkg/storage/utils/eosfs/eosfs.go b/pkg/storage/utils/eosfs/eosfs.go index 33ff26a4b0..f099a8c7a7 100644 --- a/pkg/storage/utils/eosfs/eosfs.go +++ b/pkg/storage/utils/eosfs/eosfs.go @@ -1232,12 +1232,14 @@ func (fs *eosfs) GetMD(ctx context.Context, ref *provider.Reference, mdKeys []st log := appctx.GetLogger(ctx) log.Info().Msg("eosfs: get md for ref:" + ref.String()) - _, err := getUser(ctx) + u, err := getUser(ctx) if err != nil { return nil, err } - auth, err := fs.getRootAuth(ctx) + p := ref.Path + fn := fs.wrap(ctx, p) + auth, err := fs.getUserAuth(ctx, u, fn) if err != nil { return nil, err } @@ -1262,8 +1264,6 @@ func (fs *eosfs) GetMD(ctx context.Context, ref *provider.Reference, mdKeys []st return fs.convertToResourceInfo(ctx, eosFileInfo) } - p := ref.Path - // if path is home we need to add in the response any shadow folder in the shadow homedirectory. if fs.conf.EnableHome { if fs.isShareFolder(ctx, p) { @@ -1271,7 +1271,6 @@ func (fs *eosfs) GetMD(ctx context.Context, ref *provider.Reference, mdKeys []st } } - fn := fs.wrap(ctx, p) eosFileInfo, err := fs.c.GetFileInfoByPath(ctx, auth, fn) if err != nil { return nil, err