Uh oh!
There was an error while loading. Please reload this page.
feat(dav): introduce paginate with custom headers - #48662
Conversation
4279ff1 to
6a915b2Compare6a915b2 to
582f9eeCompareicewind1991
commented
Oct 14, 2024
pushed a minor change to better type return arrays |
582f9ee to
645f5f7Compareicewind1991
commented
Nov 8, 2024
Changed the queries to use |
08fffbc to
d5bf59fCompare6ee049a to
0026817Compare0026817 to
16cbf43Compare16cbf43 to
19704f6CompareUh oh!
There was an error while loading. Please reload this page.
19704f6 to
82a3d7cCompare7f6548c to
b0afbceCompareUh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
| $logger, | ||
| $eventDispatcher, | ||
| )); | ||
| $this->server->addPlugin(\OCP\Server::get(PaginatePlugin::class)); |
There was a problem hiding this comment.
Should this also be added to ServerFactory?
(in apps/dav/lib/Connector/Sabre)
There was a problem hiding this comment.
I don't know if there is a clear rule for that :/
There was a problem hiding this comment.
I do not remember the details, I think @skjnldsv knows.
From what I recall one is used for public pages and the other one for authenticated webdav or something like that? Which is why they do not have the exact same list of plugins loaded.
But quite frankly it should all be moved to the server factory, even if it stays 2 separate methods if needed.
Uh oh!
There was an error while loading. Please reload this page.
b0afbce to
3ac62bcCompare
come-nc
left a comment
There was a problem hiding this comment.
Can you detail the performance and resources implication of this?
Any (paginated) propfind will add all its results to the cache (redis?), how big of an impact is that? That can be a huge list depending on the number of files in the folder, right?
Altahrim
commented
Dec 19, 2024
Difficult to give a precise impact. It will depends of number of items in a directory, number of paginated requests… We implement this as a test to have first answers about it. |
come-nc
commented
Dec 19, 2024
But there is no trigger to enable/disable it? |
Altahrim
commented
Dec 20, 2024
Only client will use it for now, and not everywhere |
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
3ac62bc to
a14a598CompareChristophWurst
commented
Jan 10, 2025
@Altahrim since offsets are typically not scalable, at least for database operations, I'm wondering how the file list pagination behaves as the page number increases? Do you still have to build and discard entries lower than the offset or does the caching avoid rebuilding of the list? https://use-the-index-luke.com/sql/partial-results/fetch-next-page |
Altahrim
commented
Jan 10, 2025
Once the cache is built, we'll fetch only the corresponding results from cache: https://github.com/nextcloud/server/pull/48662/files#diff-7dd44509fa2becb8b56ada8a254c14836090dd56baba7f4a10abb040cfa85351R62-R65 It's trickier when we build the cache since we always fetch all matching entries to cache them… |
Altahrim
commented
Apr 1, 2025
Documentation: nextcloud/documentation#12977 |
Summary
Need a release of [4.6] Add event to allow inspecting and changing multipart responses sabre-io/dav#1549Checklist