diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-06-03 17:01:26 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-06-03 17:01:26 +0200 |
commit | c56c5cbbc42d5c9c6ffc7cab80ee4d051a402610 (patch) | |
tree | bc59d416ea55b1be3794cd2d3fd625ffdf600a81 /container-core | |
parent | abcd15d931e131e461bef2474a97140dd28c47e8 (diff) |
Add connector config for HTTP/2 streams
Diffstat (limited to 'container-core')
3 files changed, 44 insertions, 6 deletions
diff --git a/container-core/abi-spec.json b/container-core/abi-spec.json index efe6701342f..02d43104a3f 100644 --- a/container-core/abi-spec.json +++ b/container-core/abi-spec.json @@ -1039,6 +1039,7 @@ "public com.yahoo.jdisc.http.ConnectorConfig$Builder maxRequestsPerConnection(int)", "public com.yahoo.jdisc.http.ConnectorConfig$Builder maxConnectionLife(double)", "public com.yahoo.jdisc.http.ConnectorConfig$Builder http2Enabled(boolean)", + "public com.yahoo.jdisc.http.ConnectorConfig$Builder http2(com.yahoo.jdisc.http.ConnectorConfig$Http2$Builder)", "public final boolean dispatchGetConfig(com.yahoo.config.ConfigInstance$Producer)", "public final java.lang.String getDefMd5()", "public final java.lang.String getDefName()", @@ -1053,7 +1054,8 @@ "public com.yahoo.jdisc.http.ConnectorConfig$TlsClientAuthEnforcer$Builder tlsClientAuthEnforcer", "public com.yahoo.jdisc.http.ConnectorConfig$HealthCheckProxy$Builder healthCheckProxy", "public com.yahoo.jdisc.http.ConnectorConfig$ProxyProtocol$Builder proxyProtocol", - "public com.yahoo.jdisc.http.ConnectorConfig$SecureRedirect$Builder secureRedirect" + "public com.yahoo.jdisc.http.ConnectorConfig$SecureRedirect$Builder secureRedirect", + "public com.yahoo.jdisc.http.ConnectorConfig$Http2$Builder http2" ] }, "com.yahoo.jdisc.http.ConnectorConfig$HealthCheckProxy$Builder": { @@ -1089,6 +1091,37 @@ ], "fields": [] }, + "com.yahoo.jdisc.http.ConnectorConfig$Http2$Builder": { + "superClass": "java.lang.Object", + "interfaces": [ + "com.yahoo.config.ConfigBuilder" + ], + "attributes": [ + "public" + ], + "methods": [ + "public void <init>()", + "public void <init>(com.yahoo.jdisc.http.ConnectorConfig$Http2)", + "public com.yahoo.jdisc.http.ConnectorConfig$Http2$Builder streamIdleTimeout(double)", + "public com.yahoo.jdisc.http.ConnectorConfig$Http2$Builder maxConcurrentStreams(int)", + "public com.yahoo.jdisc.http.ConnectorConfig$Http2 build()" + ], + "fields": [] + }, + "com.yahoo.jdisc.http.ConnectorConfig$Http2": { + "superClass": "com.yahoo.config.InnerNode", + "interfaces": [], + "attributes": [ + "public", + "final" + ], + "methods": [ + "public void <init>(com.yahoo.jdisc.http.ConnectorConfig$Http2$Builder)", + "public double streamIdleTimeout()", + "public int maxConcurrentStreams()" + ], + "fields": [] + }, "com.yahoo.jdisc.http.ConnectorConfig$Producer": { "superClass": "java.lang.Object", "interfaces": [ @@ -1361,7 +1394,8 @@ "public com.yahoo.jdisc.http.ConnectorConfig$SecureRedirect secureRedirect()", "public int maxRequestsPerConnection()", "public double maxConnectionLife()", - "public boolean http2Enabled()" + "public boolean http2Enabled()", + "public com.yahoo.jdisc.http.ConnectorConfig$Http2 http2()" ], "fields": [ "public static final java.lang.String CONFIG_DEF_MD5", diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java index fc39de72018..4ad39f91a83 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java @@ -75,7 +75,7 @@ public class ConnectorFactory { connector.setName(connectorConfig.name()); connector.setAcceptQueueSize(connectorConfig.acceptQueueSize()); connector.setReuseAddress(connectorConfig.reuseAddress()); - connector.setIdleTimeout(idleTimeoutInMillis()); + connector.setIdleTimeout(toMillis(connector.getIdleTimeout())); return connector; } @@ -162,8 +162,8 @@ public class ConnectorFactory { private HTTP2ServerConnectionFactory newHttp2ConnectionFactory() { HTTP2ServerConnectionFactory factory = new HTTP2ServerConnectionFactory(newHttpConfiguration()); - factory.setStreamIdleTimeout(idleTimeoutInMillis()); - factory.setMaxConcurrentStreams(4096); + factory.setStreamIdleTimeout(toMillis(connectorConfig.http2().streamIdleTimeout())); + factory.setMaxConcurrentStreams(connectorConfig.http2().maxConcurrentStreams()); return factory; } @@ -194,6 +194,6 @@ public class ConnectorFactory { || (config.implicitTlsEnabled() && TransportSecurityUtils.isTransportSecurityEnabled()); } - private long idleTimeoutInMillis() { return (long) (connectorConfig.idleTimeout() * 1000.0); } + private static long toMillis(double seconds) { return (long)(seconds * 1000); } } diff --git a/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.connector.def b/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.connector.def index 09b883a620e..0b01f690aea 100644 --- a/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.connector.def +++ b/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.connector.def @@ -128,3 +128,7 @@ maxConnectionLife double default=0.0 # Enable HTTP/2 (in addition to HTTP/1.1 using ALPN) http2Enabled bool default=true + +http2.streamIdleTimeout double default=600 + +http2.maxConcurrentStreams int default=4096 |