chore: update reva to 2.20.0
This commit is contained in:
@@ -1,7 +1,65 @@
|
|||||||
Enhancement: Bump Reva
|
Enhancement: Bump Reva to v2.20.0
|
||||||
|
|
||||||
bumps reva version
|
* Bugfix [cs3org/reva#4623](https://github.com/cs3org/reva/pull/4623): Consistently use spaceid and nodeid in logs
|
||||||
|
* Bugfix [cs3org/reva#4584](https://github.com/cs3org/reva/pull/4584): Prevent copying a file to a parent folder
|
||||||
|
* Bugfix [cs3org/reva#4700](https://github.com/cs3org/reva/pull/4700): Clean empty trash node path on delete
|
||||||
|
* Bugfix [cs3org/reva#4567](https://github.com/cs3org/reva/pull/4567): Fix error message in authprovider if user is not found
|
||||||
|
* Bugfix [cs3org/reva#4615](https://github.com/cs3org/reva/pull/4615): Write blob based on session id
|
||||||
|
* Bugfix [cs3org/reva#4557](https://github.com/cs3org/reva/pull/4557): Fix ceph build
|
||||||
|
* Bugfix [cs3org/reva#4711](https://github.com/cs3org/reva/pull/4711): Duplicate headers in DAV responses
|
||||||
|
* Bugfix [cs3org/reva#4568](https://github.com/cs3org/reva/pull/4568): Fix sharing invite on virtual drive
|
||||||
|
* Bugfix [cs3org/reva#4559](https://github.com/cs3org/reva/pull/4559): Fix graph drive invite
|
||||||
|
* Bugfix [cs3org/reva#4593](https://github.com/cs3org/reva/pull/4593): Make initiatorIDs also work on uploads
|
||||||
|
* Bugfix [cs3org/reva#4608](https://github.com/cs3org/reva/pull/4608): Use gateway selector in jsoncs3
|
||||||
|
* Bugfix [cs3org/reva#4546](https://github.com/cs3org/reva/pull/4546): Fix the mount points naming
|
||||||
|
* Bugfix [cs3org/reva#4678](https://github.com/cs3org/reva/pull/4678): Fix nats encoding
|
||||||
|
* Bugfix [cs3org/reva#4630](https://github.com/cs3org/reva/pull/4630): Fix ocm-share-id
|
||||||
|
* Bugfix [cs3org/reva#4518](https://github.com/cs3org/reva/pull/4518): Fix an error when lock/unlock a file
|
||||||
|
* Bugfix [cs3org/reva#4622](https://github.com/cs3org/reva/pull/4622): Fix public share update
|
||||||
|
* Bugfix [cs3org/reva#4566](https://github.com/cs3org/reva/pull/4566): Fix public link previews
|
||||||
|
* Bugfix [cs3org/reva#4589](https://github.com/cs3org/reva/pull/4589): Fix uploading via a public link
|
||||||
|
* Bugfix [cs3org/reva#4660](https://github.com/cs3org/reva/pull/4660): Fix creating documents in nested folders of public shares
|
||||||
|
* Bugfix [cs3org/reva#4635](https://github.com/cs3org/reva/pull/4635): Fix nil pointer when removing groups from space
|
||||||
|
* Bugfix [cs3org/reva#4709](https://github.com/cs3org/reva/pull/4709): Fix share update
|
||||||
|
* Bugfix [cs3org/reva#4661](https://github.com/cs3org/reva/pull/4661): Fix space share update for ocs
|
||||||
|
* Bugfix [cs3org/reva#4656](https://github.com/cs3org/reva/pull/4656): Fix space share update
|
||||||
|
* Bugfix [cs3org/reva#4561](https://github.com/cs3org/reva/pull/4561): Fix Stat() by Path on re-created resource
|
||||||
|
* Bugfix [cs3org/reva#4710](https://github.com/cs3org/reva/pull/4710): Tolerate missing user space index
|
||||||
|
* Bugfix [cs3org/reva#4632](https://github.com/cs3org/reva/pull/4632): Fix access to files withing a public link targeting a space root
|
||||||
|
* Bugfix [cs3org/reva#4603](https://github.com/cs3org/reva/pull/4603): Mask user email in output
|
||||||
|
* Change [cs3org/reva#4542](https://github.com/cs3org/reva/pull/4542): Drop unused service spanning stat cache
|
||||||
|
* Enhancement [cs3org/reva#4712](https://github.com/cs3org/reva/pull/4712): Add the error translation to the utils
|
||||||
|
* Enhancement [cs3org/reva#4696](https://github.com/cs3org/reva/pull/4696): Add List method to ocis and s3ng blobstore
|
||||||
|
* Enhancement [cs3org/reva#4693](https://github.com/cs3org/reva/pull/4693): Add mimetype for sb3 files
|
||||||
|
* Enhancement [cs3org/reva#4699](https://github.com/cs3org/reva/pull/4699): Add a Path method to blobstore
|
||||||
|
* Enhancement [cs3org/reva#4695](https://github.com/cs3org/reva/pull/4695): Add photo and image props
|
||||||
|
* Enhancement [cs3org/reva#4706](https://github.com/cs3org/reva/pull/4706): Add secureview flag when listing apps via http
|
||||||
|
* Enhancement [cs3org/reva#4585](https://github.com/cs3org/reva/pull/4585): Move more consistency checks to the usershare API
|
||||||
|
* Enhancement [cs3org/reva#4702](https://github.com/cs3org/reva/pull/4702): Added theme capability
|
||||||
|
* Enhancement [cs3org/reva#4672](https://github.com/cs3org/reva/pull/4672): Add virus filter to list uploads sessions
|
||||||
|
* Enhancement [cs3org/reva#4614](https://github.com/cs3org/reva/pull/4614): Bump mockery to v2.40.2
|
||||||
|
* Enhancement [cs3org/reva#4621](https://github.com/cs3org/reva/pull/4621): Use a memory cache for the personal space creation cache
|
||||||
|
* Enhancement [cs3org/reva#4556](https://github.com/cs3org/reva/pull/4556): Allow tracing requests by giving util functions a context
|
||||||
|
* Enhancement [cs3org/reva#4694](https://github.com/cs3org/reva/pull/4694): Expose SecureView in WebDAV permissions
|
||||||
|
* Enhancement [cs3org/reva#4652](https://github.com/cs3org/reva/pull/4652): Better error codes when removing a space member
|
||||||
|
* Enhancement [cs3org/reva#4725](https://github.com/cs3org/reva/pull/4725): Unique share mountpoint name
|
||||||
|
* Enhancement [cs3org/reva#4689](https://github.com/cs3org/reva/pull/4689): Extend service account permissions
|
||||||
|
* Enhancement [cs3org/reva#4545](https://github.com/cs3org/reva/pull/4545): Extend service account permissions
|
||||||
|
* Enhancement [cs3org/reva#4581](https://github.com/cs3org/reva/pull/4581): Make decomposedfs more extensible
|
||||||
|
* Enhancement [cs3org/reva#4564](https://github.com/cs3org/reva/pull/4564): Send file locked/unlocked events
|
||||||
|
* Enhancement [cs3org/reva#4730](https://github.com/cs3org/reva/pull/4730): Improve posixfs storage driver
|
||||||
|
* Enhancement [cs3org/reva#4587](https://github.com/cs3org/reva/pull/4587): Allow passing a initiator id
|
||||||
|
* Enhancement [cs3org/reva#4645](https://github.com/cs3org/reva/pull/4645): Add ItemID to LinkRemoved
|
||||||
|
* Enhancement [cs3org/reva#4686](https://github.com/cs3org/reva/pull/4686): Mint view only token for open in app requests
|
||||||
|
* Enhancement [cs3org/reva#4606](https://github.com/cs3org/reva/pull/4606): Remove resharing
|
||||||
|
* Enhancement [cs3org/reva#4643](https://github.com/cs3org/reva/pull/4643): Secure viewer share role
|
||||||
|
* Enhancement [cs3org/reva#4631](https://github.com/cs3org/reva/pull/4631): Add space-share-updated event
|
||||||
|
* Enhancement [cs3org/reva#4685](https://github.com/cs3org/reva/pull/4685): Support t and x in ACEs
|
||||||
|
* Enhancement [cs3org/reva#4625](https://github.com/cs3org/reva/pull/4625): Test async processing cornercases
|
||||||
|
* Enhancement [cs3org/reva#4653](https://github.com/cs3org/reva/pull/4653): Allow to resolve public shares without the ocs tokeninfo endpoint
|
||||||
|
* Enhancement [cs3org/reva#4657](https://github.com/cs3org/reva/pull/4657): Add ScanData to Uploadsession
|
||||||
|
|
||||||
|
https://github.com/owncloud/ocis/pull/9415
|
||||||
https://github.com/owncloud/ocis/pull/9377
|
https://github.com/owncloud/ocis/pull/9377
|
||||||
https://github.com/owncloud/ocis/pull/9330
|
https://github.com/owncloud/ocis/pull/9330
|
||||||
https://github.com/owncloud/ocis/pull/9318
|
https://github.com/owncloud/ocis/pull/9318
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ require (
|
|||||||
github.com/cenkalti/backoff v2.2.1+incompatible
|
github.com/cenkalti/backoff v2.2.1+incompatible
|
||||||
github.com/coreos/go-oidc/v3 v3.10.0
|
github.com/coreos/go-oidc/v3 v3.10.0
|
||||||
github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781
|
github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781
|
||||||
github.com/cs3org/reva/v2 v2.19.2-0.20240618080316-ed0273c9db9b
|
github.com/cs3org/reva/v2 v2.20.0
|
||||||
github.com/dhowden/tag v0.0.0-20230630033851-978a0926ee25
|
github.com/dhowden/tag v0.0.0-20230630033851-978a0926ee25
|
||||||
github.com/dutchcoders/go-clamd v0.0.0-20170520113014-b970184f4d9e
|
github.com/dutchcoders/go-clamd v0.0.0-20170520113014-b970184f4d9e
|
||||||
github.com/egirna/icap-client v0.1.1
|
github.com/egirna/icap-client v0.1.1
|
||||||
|
|||||||
@@ -1024,8 +1024,8 @@ github.com/crewjam/saml v0.4.14 h1:g9FBNx62osKusnFzs3QTN5L9CVA/Egfgm+stJShzw/c=
|
|||||||
github.com/crewjam/saml v0.4.14/go.mod h1:UVSZCf18jJkk6GpWNVqcyQJMD5HsRugBPf4I1nl2mME=
|
github.com/crewjam/saml v0.4.14/go.mod h1:UVSZCf18jJkk6GpWNVqcyQJMD5HsRugBPf4I1nl2mME=
|
||||||
github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781 h1:BUdwkIlf8IS2FasrrPg8gGPHQPOrQ18MS1Oew2tmGtY=
|
github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781 h1:BUdwkIlf8IS2FasrrPg8gGPHQPOrQ18MS1Oew2tmGtY=
|
||||||
github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
|
github.com/cs3org/go-cs3apis v0.0.0-20231023073225-7748710e0781/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
|
||||||
github.com/cs3org/reva/v2 v2.19.2-0.20240618080316-ed0273c9db9b h1:IPFiNd8Xev9WxAt+LkJUxnbyU8Y1rGi5Ha0S+ZNObr8=
|
github.com/cs3org/reva/v2 v2.20.0 h1:UzfWFEg1c3J78LuB1BbOCuWrl5MsieAV5hu55Jj4lW4=
|
||||||
github.com/cs3org/reva/v2 v2.19.2-0.20240618080316-ed0273c9db9b/go.mod h1:Rb2XnhpGKnH7k6WBFZlMygbyBxW6ma09Z4Uk+ro0v+A=
|
github.com/cs3org/reva/v2 v2.20.0/go.mod h1:Rb2XnhpGKnH7k6WBFZlMygbyBxW6ma09Z4Uk+ro0v+A=
|
||||||
github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
|
github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
|
||||||
github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
|
github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
|
||||||
github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
|
github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
|
||||||
|
|||||||
-65
@@ -24,7 +24,6 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
|
||||||
|
|
||||||
user "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1"
|
user "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1"
|
||||||
provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
|
provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
|
||||||
@@ -77,10 +76,6 @@ func New(b metadata.Backend, um usermapper.Mapper, o *options.Options) *Lookup {
|
|||||||
userMapper: um,
|
userMapper: um,
|
||||||
}
|
}
|
||||||
|
|
||||||
go func() {
|
|
||||||
_ = lu.WarmupIDCache(o.Root)
|
|
||||||
}()
|
|
||||||
|
|
||||||
return lu
|
return lu
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,66 +89,6 @@ func (lu *Lookup) GetCachedID(ctx context.Context, spaceID, nodeID string) (stri
|
|||||||
return lu.IDCache.Get(ctx, spaceID, nodeID)
|
return lu.IDCache.Get(ctx, spaceID, nodeID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// WarmupIDCache warms up the id cache
|
|
||||||
func (lu *Lookup) WarmupIDCache(root string) error {
|
|
||||||
spaceID := []byte("")
|
|
||||||
|
|
||||||
scopeSpace := func(spaceCandidate string) error {
|
|
||||||
if !lu.Options.UseSpaceGroups {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// set the uid and gid for the space
|
|
||||||
fi, err := os.Stat(spaceCandidate)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
sys := fi.Sys().(*syscall.Stat_t)
|
|
||||||
gid := int(sys.Gid)
|
|
||||||
_, err = lu.userMapper.ScopeUserByIds(-1, gid)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
attribs, err := lu.metadataBackend.All(context.Background(), path)
|
|
||||||
if err == nil {
|
|
||||||
nodeSpaceID := attribs[prefixes.SpaceIDAttr]
|
|
||||||
if len(nodeSpaceID) > 0 {
|
|
||||||
spaceID = nodeSpaceID
|
|
||||||
|
|
||||||
err = scopeSpace(path)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// try to find space
|
|
||||||
spaceCandidate := path
|
|
||||||
for strings.HasPrefix(spaceCandidate, lu.Options.Root) {
|
|
||||||
spaceID, err = lu.MetadataBackend().Get(context.Background(), spaceCandidate, prefixes.SpaceIDAttr)
|
|
||||||
if err == nil {
|
|
||||||
err = scopeSpace(path)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
break
|
|
||||||
}
|
|
||||||
spaceCandidate = filepath.Dir(spaceCandidate)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
id, ok := attribs[prefixes.IDAttr]
|
|
||||||
if ok && len(spaceID) > 0 {
|
|
||||||
_ = lu.IDCache.Set(context.Background(), string(spaceID), string(id), path)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// NodeFromPath returns the node for the given path
|
// NodeFromPath returns the node for the given path
|
||||||
func (lu *Lookup) NodeIDFromParentAndName(ctx context.Context, parent *node.Node, name string) (string, error) {
|
func (lu *Lookup) NodeIDFromParentAndName(ctx context.Context, parent *node.Node, name string) (string, error) {
|
||||||
id, err := lu.metadataBackend.Get(ctx, filepath.Join(parent.InternalPath(), name), prefixes.IDAttr)
|
id, err := lu.metadataBackend.Get(ctx, filepath.Join(parent.InternalPath(), name), prefixes.IDAttr)
|
||||||
|
|||||||
-1
@@ -36,7 +36,6 @@ func NewStoreIDCache(o *options.Options) *StoreIDCache {
|
|||||||
return &StoreIDCache{
|
return &StoreIDCache{
|
||||||
cache: store.Create(
|
cache: store.Create(
|
||||||
store.Store(o.IDCache.Store),
|
store.Store(o.IDCache.Store),
|
||||||
store.TTL(o.IDCache.TTL),
|
|
||||||
store.Size(o.IDCache.Size),
|
store.Size(o.IDCache.Size),
|
||||||
microstore.Nodes(o.IDCache.Nodes...),
|
microstore.Nodes(o.IDCache.Nodes...),
|
||||||
microstore.Database(o.IDCache.Database),
|
microstore.Database(o.IDCache.Database),
|
||||||
|
|||||||
+65
@@ -279,3 +279,68 @@ assimilate:
|
|||||||
|
|
||||||
return fi, nil
|
return fi, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WarmupIDCache warms up the id cache
|
||||||
|
func (t *Tree) WarmupIDCache(root string, assimilate bool) error {
|
||||||
|
spaceID := []byte("")
|
||||||
|
|
||||||
|
scopeSpace := func(spaceCandidate string) error {
|
||||||
|
if !t.options.UseSpaceGroups {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// set the uid and gid for the space
|
||||||
|
fi, err := os.Stat(spaceCandidate)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
sys := fi.Sys().(*syscall.Stat_t)
|
||||||
|
gid := int(sys.Gid)
|
||||||
|
_, err = t.userMapper.ScopeUserByIds(-1, gid)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
attribs, err := t.lookup.MetadataBackend().All(context.Background(), path)
|
||||||
|
if err == nil {
|
||||||
|
nodeSpaceID := attribs[prefixes.SpaceIDAttr]
|
||||||
|
if len(nodeSpaceID) > 0 {
|
||||||
|
spaceID = nodeSpaceID
|
||||||
|
|
||||||
|
err = scopeSpace(path)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// try to find space
|
||||||
|
spaceCandidate := path
|
||||||
|
for strings.HasPrefix(spaceCandidate, t.options.Root) {
|
||||||
|
spaceID, err = t.lookup.MetadataBackend().Get(context.Background(), spaceCandidate, prefixes.SpaceIDAttr)
|
||||||
|
if err == nil {
|
||||||
|
err = scopeSpace(path)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
spaceCandidate = filepath.Dir(spaceCandidate)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(spaceID) == 0 {
|
||||||
|
return nil // no space found
|
||||||
|
}
|
||||||
|
|
||||||
|
id, ok := attribs[prefixes.IDAttr]
|
||||||
|
if ok {
|
||||||
|
_ = t.lookup.(*lookup.Lookup).CacheID(context.Background(), string(spaceID), string(id), path)
|
||||||
|
} else if assimilate {
|
||||||
|
_ = t.Scan(path, false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
Generated
Vendored
+1
-3
@@ -7,8 +7,6 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/cs3org/reva/v2/pkg/storage/fs/posix/lookup"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type GpfsFileAuditLoggingWatcher struct {
|
type GpfsFileAuditLoggingWatcher struct {
|
||||||
@@ -72,7 +70,7 @@ start:
|
|||||||
case "RENAME":
|
case "RENAME":
|
||||||
go func() {
|
go func() {
|
||||||
_ = w.tree.Scan(ev.Path, true)
|
_ = w.tree.Scan(ev.Path, true)
|
||||||
_ = w.tree.lookup.(*lookup.Lookup).WarmupIDCache(ev.Path)
|
_ = w.tree.WarmupIDCache(ev.Path, false)
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
case io.EOF:
|
case io.EOF:
|
||||||
|
|||||||
Generated
Vendored
+1
-2
@@ -7,7 +7,6 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/cs3org/reva/v2/pkg/storage/fs/posix/lookup"
|
|
||||||
kafka "github.com/segmentio/kafka-go"
|
kafka "github.com/segmentio/kafka-go"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -57,7 +56,7 @@ func (w *GpfsWatchFolderWatcher) Watch(topic string) {
|
|||||||
case strings.Contains(lwev.Event, "IN_MOVED_TO"):
|
case strings.Contains(lwev.Event, "IN_MOVED_TO"):
|
||||||
go func() {
|
go func() {
|
||||||
_ = w.tree.Scan(lwev.Path, true)
|
_ = w.tree.Scan(lwev.Path, true)
|
||||||
_ = w.tree.lookup.(*lookup.Lookup).WarmupIDCache(lwev.Path)
|
_ = w.tree.WarmupIDCache(lwev.Path, false)
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -4,7 +4,6 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/cs3org/reva/v2/pkg/storage/fs/posix/lookup"
|
|
||||||
"github.com/pablodz/inotifywaitgo/inotifywaitgo"
|
"github.com/pablodz/inotifywaitgo/inotifywaitgo"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -52,7 +51,7 @@ func (iw *InotifyWatcher) Watch(path string) {
|
|||||||
case inotifywaitgo.MOVED_TO:
|
case inotifywaitgo.MOVED_TO:
|
||||||
go func() {
|
go func() {
|
||||||
_ = iw.tree.Scan(event.Filename, true)
|
_ = iw.tree.Scan(event.Filename, true)
|
||||||
_ = iw.tree.lookup.(*lookup.Lookup).WarmupIDCache(event.Filename)
|
_ = iw.tree.WarmupIDCache(event.Filename, false)
|
||||||
}()
|
}()
|
||||||
case inotifywaitgo.CLOSE_WRITE:
|
case inotifywaitgo.CLOSE_WRITE:
|
||||||
go func() { _ = iw.tree.Scan(event.Filename, true) }()
|
go func() { _ = iw.tree.Scan(event.Filename, true) }()
|
||||||
|
|||||||
+20
-4
@@ -30,6 +30,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/gofrs/flock"
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
@@ -133,10 +134,25 @@ func New(lu node.PathLookup, bs Blobstore, um usermapper.Mapper, o *options.Opti
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Start watching for fs events and put them into the queue
|
// Start watching for fs events and put them into the queue
|
||||||
go t.watcher.Watch(watchPath)
|
go func() {
|
||||||
|
fileLock := flock.New(filepath.Join(o.Root, ".primary.lock"))
|
||||||
|
locked, err := fileLock.TryLock()
|
||||||
|
if err != nil {
|
||||||
|
log.Err(err).Msg("could not acquire primary lock")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if !locked {
|
||||||
|
log.Err(err).Msg("watcher is already locked")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Debug().Msg("acquired primary lock")
|
||||||
|
|
||||||
// Handle queued fs events
|
go t.watcher.Watch(watchPath)
|
||||||
go t.workScanQueue()
|
go t.workScanQueue()
|
||||||
|
go func() {
|
||||||
|
_ = t.WarmupIDCache(o.Root, true)
|
||||||
|
}()
|
||||||
|
}()
|
||||||
|
|
||||||
return t, nil
|
return t, nil
|
||||||
}
|
}
|
||||||
@@ -308,7 +324,7 @@ func (t *Tree) Move(ctx context.Context, oldNode *node.Node, newNode *node.Node)
|
|||||||
_ = t.lookup.(*lookup.Lookup).CacheID(ctx, newNode.SpaceID, newNode.ID, filepath.Join(newNode.ParentPath(), newNode.Name))
|
_ = t.lookup.(*lookup.Lookup).CacheID(ctx, newNode.SpaceID, newNode.ID, filepath.Join(newNode.ParentPath(), newNode.Name))
|
||||||
// update id cache for the moved subtree
|
// update id cache for the moved subtree
|
||||||
if oldNode.IsDir(ctx) {
|
if oldNode.IsDir(ctx) {
|
||||||
err = t.lookup.(*lookup.Lookup).WarmupIDCache(filepath.Join(newNode.ParentPath(), newNode.Name))
|
err = t.WarmupIDCache(filepath.Join(newNode.ParentPath(), newNode.Name), false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+1
-1
@@ -366,7 +366,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/storage/registry/v1beta1
|
||||||
github.com/cs3org/go-cs3apis/cs3/tx/v1beta1
|
github.com/cs3org/go-cs3apis/cs3/tx/v1beta1
|
||||||
github.com/cs3org/go-cs3apis/cs3/types/v1beta1
|
github.com/cs3org/go-cs3apis/cs3/types/v1beta1
|
||||||
# github.com/cs3org/reva/v2 v2.19.2-0.20240618080316-ed0273c9db9b
|
# github.com/cs3org/reva/v2 v2.20.0
|
||||||
## explicit; go 1.21
|
## explicit; go 1.21
|
||||||
github.com/cs3org/reva/v2/cmd/revad/internal/grace
|
github.com/cs3org/reva/v2/cmd/revad/internal/grace
|
||||||
github.com/cs3org/reva/v2/cmd/revad/runtime
|
github.com/cs3org/reva/v2/cmd/revad/runtime
|
||||||
|
|||||||
Reference in New Issue
Block a user