On Tue, 6 Sep 2022 13:56:15 GMT, Conor Cleary <ccle...@openjdk.org> 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

Reply via email to