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