RFR: 6968351: httpserver clashes with delayed TCP ACKs for low Content-Length [v17]

Jaikiran Pai jpai at openjdk.org
Thu Apr 25 12:48:33 UTC 2024


On Tue, 23 Apr 2024 19:10:48 GMT, robert engels <duke at openjdk.org> wrote:

>> fix bug JDK-B6968351 by avoiding flush after response headers
>
> robert engels has updated the pull request incrementally with one additional commit since the last revision:
> 
>   fix broken test cases

I think it might be better to move out the new test from `test/jdk/com/sun/net/httpserver/bugs/TcpNoDelayNotRequired.java` to `test/jdk/com/sun/net/httpserver/TcpNoDelayNotRequired.java`. We haven't been using the `bugs` directory (or the bug number as the file name) for a while now.

test/jdk/com/sun/net/httpserver/bugs/TcpNoDelayNotRequired.java line 99:

> 97:             t.sendResponseHeaders(200,5);
> 98:             t.getResponseBody().write("hello".getBytes(StandardCharsets.ISO_8859_1));
> 99:             t.getResponseBody().close();

I don't have a strong preference, but would you be open to updating this (and the ChunkedHandler) to:


try (InputStream is = t.getRequestBody()) {
    is.readAllBytes();
}
Headers reqHeaders = t.getRequestHeaders();
Headers respHeaders = t.getResponseHeaders();
respHeaders.add("content-type", "text/plain");
t.sendResponseHeaders(200,5);
try (OutputStream os = t.getResponseBody()) {
    os.write("hello".getBytes(StandardCharsets.ISO_8859_1));
}


(I haven't compiled it or done any testing with the proposed snippet)

test/jdk/com/sun/net/httpserver/bugs/TcpNoDelayNotRequired.java line 112:

> 110:             is.close();
> 111:             rmap.add("content-type","text/plain");
> 112:             t.sendResponseHeaders(200,0);

The value 0 and -1 have been a constant confusion in our tests when calling `sendResponseHeaders`. Can you update this line to:


t.sendResponseHeaders(200, 0 /* chunked */);

so that it's immediately obvious what the intent here is.

test/jdk/java/net/Authenticator/B4769350.java line 358:

> 356:         {
> 357:             exchange.getResponseHeaders().add("Proxy-Authenticate", reply);
> 358:             exchange.sendResponseHeaders(407, -1);

Similarly here:


exchange.sendResponseHeaders(407, -1 /* no response body */);

-------------

PR Comment: https://git.openjdk.org/jdk/pull/18667#issuecomment-2077092241
PR Review Comment: https://git.openjdk.org/jdk/pull/18667#discussion_r1579399205
PR Review Comment: https://git.openjdk.org/jdk/pull/18667#discussion_r1579400959
PR Review Comment: https://git.openjdk.org/jdk/pull/18667#discussion_r1579402251


More information about the net-dev mailing list