You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Tusd library has a hook called PreFinishResponseCallback, with that REVA could calculate the etag after the last chunk and write it to the response header, but this hook is never used....
How are the plans? Both the Desktop and soon Android Client already support that way, with a fallback using Propfind to force the etag from server. But that is a another Request, causing Latency.
in tusd library, vendor/config.go
and
handler/unrouted_handler.go
It would be a very nice stuff if this could be implemented?
It registers the PreFinishResponseCallback from the issue description so the chunked finalize returns the same etag and permissions as the creation-with-upload path. The PR carries one open design question: the data path is authenticated by the transfer token, which has no user identity, so the callback restores the upload's executant to stat the file; a small storage interface could surface the etag instead.
Edit (2026-06-30): the storage-interface version is now up as a separate PR, with the earlier one kept for comparison:
Activity
micbar commentedon Mar 2, 2026
@kulmann @dragotin What do you think?
micbar commentedon Mar 2, 2026
@zerox80 why is this a bug?
guruz commentedon Mar 2, 2026
I changed type to Enhancement (as in Performance enhancement).
It would save one round trip to get the ETag after the last chunk.
(@dragotin For nostalgia.. Note that we kind of already had this with the old chunking protocol. https://dragotin.wordpress.com/2015/06/22/owncloud-chunking-ng/
Or maybe not, that one had a MOVE and here it is just PATCHes.. :-) )
zerox80 commentedon Mar 2, 2026
Not a real bug, i just didn't know if i should tag is as "feature request" "bug" or "enhancement".
zerox80 commentedon Apr 25, 2026
Hi, is there any update?
michaelstingl commentedon Jun 7, 2026
I went ahead and prototyped this on the reva side, as a proposal to make the discussion concrete rather than a finished solution:
It registers the
PreFinishResponseCallbackfrom the issue description so the chunked finalize returns the same etag and permissions as the creation-with-upload path. The PR carries one open design question: the data path is authenticated by the transfer token, which has no user identity, so the callback restores the upload's executant to stat the file; a small storage interface could surface the etag instead.Edit (2026-06-30): the storage-interface version is now up as a separate PR, with the earlier one kept for comparison:
🤖 drafted with Claude Code, reviewed before submitting.
guruz commentedon Jun 12, 2026
feat(tus): return etag and permissions after the last TUS chunk
feat(tus): return etag and permissions after the last TUS chunk
feat(tus): return etag and permissions after the last TUS chunk
feat(tus): return etag and permissions after the last TUS chunk
test(coreApiWebdavUploadTUS): assert etag and permissions on the fina…
test(coreApiWebdavUploadTUS): assert etag and permissions on the fina…
feat(tus): return etag and permissions after the last TUS chunk
test(coreApiWebdavUploadTUS): assert etag and permissions on the fina…
test(coreApiWebdavUploadTUS): assert etag and permissions on the fina…