mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-28 16:01:18 -05:00
Merge pull request #6232 from owncloud/bump-reva-756a84314af0
bump reva to 756a84314af0
This commit is contained in:
5
changelog/unreleased/bump-reva.md
Normal file
5
changelog/unreleased/bump-reva.md
Normal file
@@ -0,0 +1,5 @@
|
||||
Enhancement: Update Reva to version TODO
|
||||
|
||||
TODO
|
||||
|
||||
https://github.com/owncloud/ocis/pull/6232
|
||||
2
go.mod
2
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
|
||||
|
||||
4
go.sum
4
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=
|
||||
|
||||
182
vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/tree/tree.go
generated
vendored
182
vendor/github.com/cs3org/reva/v2/pkg/storage/utils/decomposedfs/tree/tree.go
generated
vendored
@@ -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 {
|
||||
|
||||
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user