RFR: 8256459: java/net/httpclient/ManyRequests.java and java/net/httpclient/LineBodyHandlerTest.java fail infrequently with java.net.ConnectException: Connection timed out: no further information

Daniel Fuchs dfuchs at openjdk.java.net
Wed Dec 9 18:26:51 UTC 2020


On Wed, 9 Dec 2020 17:23:19 GMT, Chris Hegarty <chegar at openjdk.org> wrote:

>> Hi, 
>> 
>> Please find here a changeset that fixes the infrequent (but annoying) test failures
>> caused by unexpected ConnectionException "Connection timed out: no further information"
>> which have been observed to occur on some platforms.
>> 
>> Tests are updated to allow the test server to handle requests concurrently.
>> PlainHttpConnection is updated to retry connection once if chan::finishConnect fails
>> early with ConnectionException and the connection timeout has not expired.
>
> src/java.net.http/share/classes/jdk/internal/net/http/PlainHttpConnection.java line 205:
> 
>> 203:         }
>> 204:         return cf.handle((r,t) -> checkRetryConnect(r, t,exchange))
>> 205:                 .thenCompose(Function.identity());
> 
> So this changes behaviour so that a single subsequent additional TCP connection may be tried for all cases where the connection fails AND there is remaining connection deadline. Ok.

Yes - I didn't want to depend on the exception message - and there's no way to distinguish with the exception type (it's raw `ConnectionException`). It will however happen *only* when the `ConnectionException` is thrown by `SocketChannel::finishConnect`.

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

PR: https://git.openjdk.java.net/jdk/pull/1716


More information about the net-dev mailing list