perf(rich_workspace): only add property for parent#5963
Conversation
|
So the test actually has a comment on this that proofs what we discussed in the call: text/cypress/e2e/propfind.spec.js Lines 43 to 56 in 3a9c4f6 @alperozturk96 Can you keep us posted here on if that is possible to address on Android? |
|
Other failure is unrelated. |
b55ef41 to
4a48aa3
Compare
|
Good to know ! @mpivchev |
|
Discussed with @tobiasKaminsky as we couldn't think of a proper way to make the root only result working with android:
|
Then performance regression is not fixed on Android, having ~10-100 times slower root update than it was in 27 |
True, but this should already have been the case before 28. Though only considered as an alternative, caching is probably the most reasonable |
Why? It was added only in 28, or I got it wrong? |
|
No, the clients already request this property since a long time. 28 only introduced a change where the web frontend now also fetches those, so the performance issue is also there earlier, just was never noticed. |
Working on this solution |
|
Can this be finished as it's preventing workspace from being enabled on c.nc.c |
@tobiasKaminsky Could you test? (see #5963 (comment)) |
|
This is still relevant |
📝 Summary
Fixes a performance regression for instances with many external storages.
Steps to reproduce
textapp/apps/files/filesfor PROPFIND request for local s3.With external s3, like Amazon, it could be 10 times slower.
That was a regression in 28.
The problem
There is a new
<nc:rich_workspace>property in each Node in the response. To add this property (even empty),textchecks for a file in every child folder, which could be an external remote storage.Having a hundred external storages mounted in one parent, it results in a hundred requests to remotes for the data that is not really required to have in advance.
🚧 TODO
💥 Breaking changes
This breaks the Android Files client a bit—it uses a response from a parent to know about description in children.
Broken scenario:
Alternative solution
Only ignore external storages, which has the most performance impact.
🏁 Checklist
npm run lint/npm run stylelint/composer run cs:check)