On Tue, 6 Sep 2022 13:56:15 GMT, Conor Cleary <[email protected]> wrote:
> **Issue**
> When using HTTP/2 with the HttpClient, it can often be necessary to close an
> idle Http2 Connection before a server sends a GOAWAY frame. For example, a
> server or cloud based tool could close a TCP connection silently when it is
> idle for too long resulting in ConnectionResetException being thrown by the
> HttpClient.
>
> **Proposed Solution**
> A new system property, `jdk.httpclient.idleConnectionTimeout`, was added and
> is used to specify in Milliseconds how long an idle connection (idle
> connections are those which have no currently active streams) for the
> HttpClient before the connection is closed.
src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java line
201:
> 199: }
> 200: HttpTimeoutException hte = new HttpTimeoutException("HTTP
> connection idle, no active streams. Shutting down.");
> 201: shutdown(hte);
The implementation in `shutdown` has some code which logs errors/exception when
`error` logging is enabled. Specifically:
if (Log.errors()) {
if (!(t instanceof EOFException) || isActive()) {
Log.logError(t);
The implementation of `Log.logError` logs the exception stacktrace as well as a
message which says `ERROR:`. Should we add a specific check in the `shutdown`
implementation to prevent logging exception stacktraces when a connection is
being closed due to idle timeout and instead just log it as an informational
message?
-------------
PR: https://git.openjdk.org/jdk/pull/10183