From a8e8d0b841c3a57df99088e0c0ff3b1cf5324ea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 4 May 2023 17:15:38 +0200 Subject: [PATCH] bump reva to 756a84314af0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- changelog/unreleased/bump-reva.md | 5 + go.mod | 2 +- go.sum | 4 +- .../storage/utils/decomposedfs/tree/tree.go | 182 +++++++++--------- vendor/modules.txt | 2 +- 5 files changed, 99 insertions(+), 96 deletions(-) create mode 100644 changelog/unreleased/bump-reva.md diff --git a/changelog/unreleased/bump-reva.md b/changelog/unreleased/bump-reva.md new file mode 100644 index 000000000..808a3d706 --- /dev/null +++ b/changelog/unreleased/bump-reva.md @@ -0,0 +1,5 @@ +Enhancement: Update Reva to version TODO + +TODO + +https://github.com/owncloud/ocis/pull/6232 diff --git a/go.mod b/go.mod index ab753fd9b..a6dea5ae8 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/coreos/go-oidc v2.2.1+incompatible github.com/coreos/go-oidc/v3 v3.4.0 github.com/cs3org/go-cs3apis v0.0.0-20221012090518-ef2996678965 - github.com/cs3org/reva/v2 v2.13.1 + github.com/cs3org/reva/v2 v2.13.2-0.20230504093557-756a84314af0 github.com/disintegration/imaging v1.6.2 github.com/dutchcoders/go-clamd v0.0.0-20170520113014-b970184f4d9e github.com/egirna/icap-client v0.1.1 diff --git a/go.sum b/go.sum index de43e44e3..494b046e3 100644 --- a/go.sum +++ b/go.sum @@ -627,8 +627,8 @@ 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.13.1 h1:siUG/fJ4ds7RRswGtjEOLNu6u6Y+n4l9CF8ubFAUi+8= -github.com/cs3org/reva/v2 v2.13.1/go.mod h1:VxBmpOvIKlgKLPOsHun+fABopzX+3ZELPAp3N5bQMsM= +github.com/cs3org/reva/v2 v2.13.2-0.20230504093557-756a84314af0 h1:KJHTdnQpEB3hcOSNXtMFedAvplpNRepo3RPArWFiSYo= +github.com/cs3org/reva/v2 v2.13.2-0.20230504093557-756a84314af0/go.mod h1:VxBmpOvIKlgKLPOsHun+fABopzX+3ZELPAp3N5bQMsM= github.com/cubewise-code/go-mime v0.0.0-20200519001935-8c5762b177d8 h1:Z9lwXumT5ACSmJ7WGnFl+OMLLjpz5uR2fyz7dC255FI= github.com/cubewise-code/go-mime v0.0.0-20200519001935-8c5762b177d8/go.mod h1:4abs/jPXcmJzYoYGF91JF9Uq9s/KL5n1jvFDix8KcqY= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= diff --git a/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/tree/tree.go b/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/tree/tree.go index 2cb35524c..d12125294 100644 --- a/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/tree/tree.go +++ b/vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/tree/tree.go @@ -691,9 +691,9 @@ func (t *Tree) removeNode(path string, n *node.Node) error { // Propagate propagates changes to the root of the tree func (t *Tree) Propagate(ctx context.Context, n *node.Node, sizeDiff int64) (err error) { sublog := appctx.GetLogger(ctx).With().Str("spaceid", n.SpaceID).Str("nodeid", n.ID).Logger() - if !t.options.TreeTimeAccounting && !t.options.TreeSizeAccounting { + if !t.options.TreeTimeAccounting && (!t.options.TreeSizeAccounting || sizeDiff == 0) { // no propagation enabled - sublog.Debug().Msg("propagation disabled") + sublog.Debug().Msg("propagation disabled or nothing to propagate") return } @@ -707,11 +707,33 @@ func (t *Tree) Propagate(ctx context.Context, n *node.Node, sizeDiff int64) (err for err == nil && n.ID != root.ID { sublog.Debug().Msg("propagating") - if n, err = n.Parent(); err != nil { - break - } + attrs := node.Attributes{} - sublog = sublog.With().Str("spaceid", n.SpaceID).Str("nodeid", n.ID).Logger() + var f *lockedfile.File + // lock parent before reading treesize or tree time + switch t.lookup.MetadataBackend().(type) { + case metadata.MessagePackBackend: + f, err = lockedfile.OpenFile(t.lookup.MetadataBackend().MetadataPath(n.ParentPath()), os.O_RDWR|os.O_CREATE, 0600) + case metadata.XattrsBackend: + // we have to use dedicated lockfiles to lock directories + // this only works because the xattr backend also locks folders with separate lock files + f, err = lockedfile.OpenFile(n.ParentPath()+filelocks.LockFileSuffix, os.O_RDWR|os.O_CREATE, 0600) + } + if err != nil { + return err + } + // always log error if closing node fails + defer func() { + // ignore already closed error + cerr := f.Close() + if err == nil && cerr != nil && !errors.Is(cerr, os.ErrClosed) { + err = cerr // only overwrite err with en error from close if the former was nil + } + }() + + if n, err = n.Parent(); err != nil { + return err + } // TODO none, sync and async? if !n.HasPropagation() { @@ -720,102 +742,78 @@ func (t *Tree) Propagate(ctx context.Context, n *node.Node, sizeDiff int64) (err return nil } - if t.options.TreeTimeAccounting || (t.options.TreeSizeAccounting && sizeDiff != 0) { - attrs := node.Attributes{} + sublog = sublog.With().Str("spaceid", n.SpaceID).Str("nodeid", n.ID).Logger() - var f *lockedfile.File - // lock node before reading treesize or tree time - switch t.lookup.MetadataBackend().(type) { - case metadata.MessagePackBackend: - f, err = lockedfile.OpenFile(t.lookup.MetadataBackend().MetadataPath(n.InternalPath()), os.O_RDWR|os.O_CREATE, 0600) - case metadata.XattrsBackend: - // we have to use dedicated lockfiles to lock directories - // this only works because the xattr backend also locks folders with separate lock files - f, err = lockedfile.OpenFile(n.InternalPath()+filelocks.LockFileSuffix, os.O_RDWR|os.O_CREATE, 0600) - } - if err != nil { - return err - } - // always log error if closing node fails - defer func() { - // ignore already closed error - cerr := f.Close() - if err == nil && cerr != nil && !errors.Is(cerr, os.ErrClosed) { - err = cerr // only overwrite err with en error from close if the former was nil - } - }() + if t.options.TreeTimeAccounting { + // update the parent tree time if it is older than the nodes mtime + updateSyncTime := false - if t.options.TreeTimeAccounting { - // update the parent tree time if it is older than the nodes mtime - updateSyncTime := false - - var tmTime time.Time - tmTime, err = n.GetTMTime() - switch { - case err != nil: - // missing attribute, or invalid format, overwrite - sublog.Debug().Err(err). - Msg("could not read tmtime attribute, overwriting") - updateSyncTime = true - case tmTime.Before(sTime): - sublog.Debug(). - Time("tmtime", tmTime). - Time("stime", sTime). - Msg("parent tmtime is older than node mtime, updating") - updateSyncTime = true - default: - sublog.Debug(). - Time("tmtime", tmTime). - Time("stime", sTime). - Dur("delta", sTime.Sub(tmTime)). - Msg("parent tmtime is younger than node mtime, not updating") - } - - if updateSyncTime { - // update the tree time of the parent node - attrs.SetString(prefixes.TreeMTimeAttr, sTime.UTC().Format(time.RFC3339Nano)) - } - - attrs.SetString(prefixes.TmpEtagAttr, "") + var tmTime time.Time + tmTime, err = n.GetTMTime() + switch { + case err != nil: + // missing attribute, or invalid format, overwrite + sublog.Debug().Err(err). + Msg("could not read tmtime attribute, overwriting") + updateSyncTime = true + case tmTime.Before(sTime): + sublog.Debug(). + Time("tmtime", tmTime). + Time("stime", sTime). + Msg("parent tmtime is older than node mtime, updating") + updateSyncTime = true + default: + sublog.Debug(). + Time("tmtime", tmTime). + Time("stime", sTime). + Dur("delta", sTime.Sub(tmTime)). + Msg("parent tmtime is younger than node mtime, not updating") } - // size accounting - if t.options.TreeSizeAccounting && sizeDiff != 0 { - var newSize uint64 + if updateSyncTime { + // update the tree time of the parent node + attrs.SetString(prefixes.TreeMTimeAttr, sTime.UTC().Format(time.RFC3339Nano)) + } - // read treesize - treeSize, err := n.GetTreeSize() - switch { - case metadata.IsAttrUnset(err): - // fallback to calculating the treesize - newSize, err = t.calculateTreeSize(ctx, n.InternalPath()) - if err != nil { - return err - } - case err != nil: + attrs.SetString(prefixes.TmpEtagAttr, "") + } + + // size accounting + if t.options.TreeSizeAccounting && sizeDiff != 0 { + var newSize uint64 + + // read treesize + treeSize, err := n.GetTreeSize() + switch { + case metadata.IsAttrUnset(err): + // fallback to calculating the treesize + newSize, err = t.calculateTreeSize(ctx, n.InternalPath()) + if err != nil { return err - default: - if sizeDiff > 0 { - newSize = treeSize + uint64(sizeDiff) - } else { - newSize = treeSize - uint64(-sizeDiff) - } } - - // update the tree size of the node - attrs.SetString(prefixes.TreesizeAttr, strconv.FormatUint(newSize, 10)) - sublog.Debug().Uint64("newSize", newSize).Msg("updated treesize of parent node") - } - - if err = n.SetXattrs(attrs, false); err != nil { + case err != nil: return err + default: + if sizeDiff > 0 { + newSize = treeSize + uint64(sizeDiff) + } else { + newSize = treeSize - uint64(-sizeDiff) + } } - // Release node lock early, ignore already closed error - cerr := f.Close() - if cerr != nil && !errors.Is(cerr, os.ErrClosed) { - return cerr - } + // update the tree size of the node + attrs.SetString(prefixes.TreesizeAttr, strconv.FormatUint(newSize, 10)) + sublog.Debug().Uint64("newSize", newSize).Msg("updated treesize of parent node") + } + + if err = n.SetXattrs(attrs, false); err != nil { + return err + } + + // Release node lock early, ignore already closed error + cerr := f.Close() + if cerr != nil && !errors.Is(cerr, os.ErrClosed) { + return cerr } } if err != nil { diff --git a/vendor/modules.txt b/vendor/modules.txt index 60c57e83e..f4c43537f 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -349,7 +349,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.13.1 +# github.com/cs3org/reva/v2 v2.13.2-0.20230504093557-756a84314af0 ## explicit; go 1.19 github.com/cs3org/reva/v2/cmd/revad/internal/grace github.com/cs3org/reva/v2/cmd/revad/runtime