While testing against the RAL server, we
encountered an issue with buffer size/request block
that is a known bug in the rados striper
(used by the xrootd Ceph plug-in).
The problem (sending back garbage bytes beyond
EOF) results in a corrupt file error.
The xrootd client reportedly prevents
something like this from happening because
it requests only the exact number of bytes
left on the last chunk.
Modification:
Modify the way the final
request is handled by not asking for
the default block size, but only for
the remaining bytes, which conforms
with the way the native xrootd client
behaves.
For bytes > remaining, log an error. Then,
if we have written past EOF, throw an exception.
Result:
A clearer indication of a failure on
the source server side when too many
bytes are sent, and hopefully a remedy
for avoiding that situation.
Target: master
Request: 4.2
Request: 4.1
Request: 4.0
Request: 3.5
Patch: https://rb.dcache.org/r/13124/
Requires-notes: yes
Requires-book: no
Acked-by: Tigran
Acked-by: Paul
Motivation:
https://github.com/xrootd/xrootd/issues/1454
While testing against the RAL server, we encountered an issue with buffer size/request block that is a known bug in the rados striper (used by the xrootd Ceph plug-in).
The problem (sending back garbage bytes beyond EOF) results in a corrupt file error.
The xrootd client reportedly prevents something like this from happening because it requests only the exact number of bytes left on the last chunk.
Modification:
Modify the way the final request is handled by not asking for the default block size, but only for the remaining bytes, which conforms with the way the native xrootd client behaves.
For bytes > remaining, log an error. Then, if we have written past EOF, throw an exception.
Result:
A clearer indication of a failure on the source server side when too many bytes are sent, and hopefully a remedy for avoiding that situation.
Target: master Request: 4.2 Request: 4.1 Request: 4.0 Request: 3.5 Patch: https://rb.dcache.org/r/13124/ Requires-notes: yes Requires-book: no Acked-by: Tigran Acked-by: Paul