owncloud / owncloud/ocis

relative references need to (slowly) walk the path

Open
#6,526 4 comments 0 reactions 0 assignees View on GitHub
Type:Bug
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:
![image](https://github.com/owncloud/ocis/assets/956847/8e42fb0f-de3f-47a5-bd06-97e3aed13097)

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:
![image](https://github.com/owncloud/ocis/assets/956847/5289f599-2900-4538-b6d7-b9c226629277)

hm, retrying the propfind at lvl 10 sometimes gives really bad performance:
![image](https://github.com/owncloud/ocis/assets/956847/bd7b139c-362a-4a33-9b8c-1d94b94cc043)

hmmmm, seems to resolve itself after a while ...
![Uploading image.png…]()

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.