relative references need to (slowly) walk the path
- Dominant language
- Go
- Stars
- 2.1k
- Forks
- 274
- Avg merge
- 2d 1h
- Merged PRs (30d)
- 103
Description
As a legacy from oc10 all clients currently make path based requests, relative to a space root. This forces the decomposedfs to walk the path, which takes time. For a dir https://cloud.ocis.test/files/spaces/personal/admin/f1/f2/f3/f4/f5/f6/f7/f8/f9/f10 on an NFS it might look like this:

This is negligible on local filesystems, but on NFS the Child lookup becomes painfully visible.
For now we only implemented a stat cache in decomposedfs. A direntry cache is certainly possible, but requires invalidation and coordination effort when running multiple storage providers.
As a client, you typically already have the file id when navigating the tree as every PROPFIND response for a directory listing also returns the file id of every child. The easiest way to take load off the server is to not generate it in the first place.
Making a PROPFIND with an id only reference can immediately look up the correct node:

hm, retrying the propfind at lvl 10 sometimes gives really bad performance:

hmmmm, seems to resolve itself after a while ...
![Uploading image.png…]()
Contributor guide
Assessment
This issue has not been assessed yet.