RFR: 6968351: httpserver clashes with delayed TCP ACKs for low Content-Length [v2]
robert engels
duke at openjdk.org
Fri Apr 19 15:44:57 UTC 2024
On Fri, 19 Apr 2024 09:54:48 GMT, Daniel Jeliński <djelinski at openjdk.org> wrote:
> This is not as complex as I expected it to be. Which is a good thing!
>
> Some tests are failing with this change. See:
>
> ```
> test/jdk/sun/net/www/http/KeepAliveCache/B8293562.java
> test/jdk/java/net/Authenticator/B4769350.java
> ```
>
> These tests don't close the exchange or the output stream after sending the response, and the headers are never flushed. Users might have similar code, so I think a release note might be needed.
I think this is a trivial fix. We should be able to either:
1) Flush the FixedLengthOutputStream when the bytes remaining is 0.
2) Always flush the output stream after an exchange completes. This won't affect performance if it has already been flushed()/closed() previously.
I think 1 is the better option - because you can't really use a chunked output stream without flushing or closing the stream - as the client would hang.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/18667#issuecomment-2066834030
More information about the net-dev
mailing list