RFR: 8288717: Add a means to close idle connections in HTTP/2 connection pool

Daniel Fuchs dfuchs at openjdk.org
Thu Sep 22 11:23:15 UTC 2022


On Thu, 22 Sep 2022 10:53:52 GMT, tenor-dev <duke at openjdk.org> wrote:

> IMHO, it would be great to use the same property as for HTTP/1 connections: jdk.httpclient.keepalive.timeout
> People are already expecting it to work with HTTP/2, but to everyone's surprise it doesn't.
>
> It would also be nice to support jdk.httpclient.connectionPoolSize for HTTP/2 as well, again to avoid surprises.

Although I also find that the proliferation of properties is a bit distasteful, I have to disagree on this. The HTTP/1.1 and HTTP/2 connection pools are very different in their purpose and function, and it's unlikely that a single value would fit all.

The HTTP/1.1 connection pool contains idle connections. Active connections are not in the pool. The pool may contain several connections to the same server. The HTTP/2 connection pool contains all connections, whether active or idle, but contains only one connection to a given server (it may at most have one TLS and one clear for a given server). The connections remain in the pool when they are in use - because they support multiplexing. There is no notion of "KeepAlive" like in HTTP/1.1, but each peer can close a connection at its own discretion using a GOAWAY frame.

For these reasons I would rather have different properties for configuring the different pools.

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

PR: https://git.openjdk.org/jdk/pull/10183


More information about the net-dev mailing list