RFR: 8309200: java/net/httpclient/ExecutorShutdown fais intermittently, if connection closed during upgrade
Andrey Turbanov
aturbanov at openjdk.org
Wed May 31 19:01:43 UTC 2023
On Wed, 31 May 2023 16:52:02 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:
> The ExecutorShutdown test has been observed failing intermittently, notably if by misfortune the shutdown sequence causes a connection to get aborted while upgrading. The issue is that the `ConnectionAborter` class that allows to mark the connection as being scheduled for closing before a handle to the connection is actually available isn't forwarding the original exception for which closing the connection was requested. When the connection is eventually closed, a generic `IOException: connection closed locally` is raised at the `SocketTube` level, which unfortunately can race with the original cause.
>
> The fix makes it possible to relay the original cause to the place where the IOException is raised, in order to set it as the cause of the new exception.
src/java.net.http/share/classes/jdk/internal/net/http/Exchange.java line 167:
> 165: Throwable cause;
> 166: synchronized (this) {
> 167: if ((cause = this.cause) == null) {
let's extract the assignment to a separate statement. Code is a bit hard to read.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14251#discussion_r1212154837
More information about the net-dev
mailing list