Uh oh!
There was an error while loading. Please reload this page.
[stable29] fix(dav): Do not respond version/trashbin download requests with 404 due to ChunkingV2Plugin - #62098
Merged
Merged
Conversation
backportbotBot
requested review from
DerDreschner, SebastianKrupinski and miaulalalaJuly 14, 2026 14:01
DerDreschnerforce-pushed
the
backport/61680/stable29
branch
from
July 14, 2026 14:14
8137932 to
a7b4087Compare
DerDreschner
left a comment
Contributor
There was a problem hiding this comment.
The missing changes are only the behat tests not existing in this branch. So, all good!
DerDreschnerforce-pushed
the
backport/61680/stable29
branch
from
July 14, 2026 14:16
a7b4087 to
484c7d1CompareDerDreschner
approved these changes
Jul 14, 2026
DerDreschner
marked this pull request as ready for review
July 14, 2026 14:18
DerDreschnerforce-pushed
the
backport/61680/stable29
branch
from
July 14, 2026 15:54
484c7d1 to
e2fd03eCompareCarlSchwan
approved these changes
Jul 15, 2026
DerDreschnerforce-pushed
the
backport/61680/stable29
branch
from
July 21, 2026 13:50
e2fd03e to
e31a2f4Compare…due to ChunkingV2Plugin ChunkingV2Plugin::beforeGet eagerly resolves the request path during beforeMethod:GET to block reading intermediate chunked uploads. App-provided DAV collections (versions, trashbin) are attached to the root lazily in a beforeMethod:* closure in Server.php, while uploads is registered eagerly. When beforeGet runs before that closure, getNodeForPath() throws NotFound and aborts the whole request, turning every GET under /dav/versions/ and /dav/trashbin/ into "404 File not found: versions in 'root'". PROPFIND is unaffected, since nothing resolves the path that early for it. This does not currently surface on master only by accident of listener ordering: beforeGet and the collection closure share the default priority, and because beforeGet is registered as a first-class callable (a Closure), the wildcard closure happens to sort before it, so the collections are already attached by the time beforeGet resolves the path. That ordering is not guaranteed -- it depends on how equal-priority listeners are tie-broken -- so the unguarded resolution is a latent fault that any reordering can expose. On stable 28 it is already broken, because the backport registered the handler as an array callable, which tie-breaks the other way and runs beforeGet first. Catch NotFound in beforeGet and bail out: a path that cannot be resolved is by definition not an intermediate upload. This removes the dependency on listener ordering entirely and makes the handler consistent with beforePut()/beforeMove()/beforeDelete(), which already swallow NotFound for the same reason. Add a ChunkingV2Plugin unit test (the NotFound case is the regression guard) and a file-versions integration scenario covering a real version download. Assisted-by: ClaudeCode:claude-opus-4-8[1m] Signed-off-by: David Dreschner <david.dreschner@nextcloud.com>
DerDreschnerforce-pushed
the
backport/61680/stable29
branch
from
July 22, 2026 10:21
e31a2f4 to
9848471CompareDerDreschner
commented
Jul 22, 2026
Contributor
Failing |
Contributor
You should just add this as a separate commit on this back port PR. Also, you can ping the higher ups to force merge as a last resort |
DerDreschner
commented
Jul 22, 2026
Contributor
Failing PHPUnit tests will be fixed with #62406 |
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Backport of #61680
Warning, This backport's changes differ from the original and might be incomplete⚠️
Todo
Learn more about backports at https://docs.nextcloud.com/server/stable/go.php?to=developer-backports.