RFR: 8299015: Ensure that HttpResponse.BodySubscribers.ofFile writes all bytes
Daniel Fuchs
dfuchs at openjdk.org
Mon Dec 19 17:27:48 UTC 2022
On Mon, 19 Dec 2022 14:02:41 GMT, Chris Hegarty <chegar at openjdk.org> wrote:
> The implementation of `BodySubscribers.ofFile` does not correctly handle the case of a short gathering write. The write should be retried until all the bytes have been written to the underlying file.
>
> This is generally not an issue that would occur very frequently, since the `IOV_MAX` is commonly 1024 on Mac/Linux, and 16 on Windows. However, it is clearly a bug, and should be fixed.
Ah! I see. A big byte buffer read from the socket might be split into a list of small ByteBuffer chunks at the higher level, when parsing HTTP/1.1 chunks.
> I managed to intermittently reproduce this on my Mac, by hacking on the test - not pretty. I guess the test could be updated to try to provoke this with the HTTP Client, but it doesn't seem worth it, if we accept that it just needs to be fixed.
I agree that there's no need. The test you have is enough and appropriate for the fix.
-------------
PR: https://git.openjdk.org/jdk/pull/11722
More information about the net-dev
mailing list