RFR: 8299015: Ensure that HttpResponse.BodySubscribers.ofFile writes all bytes
Daniel Fuchs
dfuchs at openjdk.org
Tue Dec 20 09:42:49 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.
src/java.net.http/share/classes/jdk/internal/net/http/ResponseSubscribers.java line 289:
> 287: ByteBuffer[] buffers = items.toArray(Utils.EMPTY_BB_ARRAY);
> 288: while (bytesWritten < size) {
> 289: bytesWritten += out.write(buffers);
Should we do something special here if no bytes are written, to avoid a busy loop?
-------------
PR: https://git.openjdk.org/jdk/pull/11722
More information about the net-dev
mailing list