diff options
Diffstat (limited to 'container-core')
3 files changed, 19 insertions, 6 deletions
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java index 11898381f0a..08b89094486 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java @@ -8,6 +8,10 @@ import com.yahoo.container.logging.RequestLog; import com.yahoo.container.logging.RequestLogEntry; import com.yahoo.jdisc.http.ServerConfig; import com.yahoo.jdisc.http.servlet.ServletRequest; +import org.eclipse.jetty.http2.HTTP2Stream; +import org.eclipse.jetty.http2.server.HttpTransportOverHTTP2; +import org.eclipse.jetty.server.HttpChannel; +import org.eclipse.jetty.server.HttpTransport; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Response; import org.eclipse.jetty.util.component.AbstractLifeCycle; @@ -117,6 +121,7 @@ class AccessLogRequestLog extends AbstractLifeCycle implements org.eclipse.jetty addNonNullValue(builder, accessLogEntry.getHitCounts(), RequestLogEntry.Builder::hitCounts); addNonNullValue(builder, accessLogEntry.getTrace(), RequestLogEntry.Builder::traceNode); } + http2StreamId(request).ifPresent(streamId -> builder.addExtraAttribute("http2-stream-id", Integer.toString(streamId))); requestLog.log(builder.build()); } catch (Exception e) { @@ -158,6 +163,15 @@ class AccessLogRequestLog extends AbstractLifeCycle implements org.eclipse.jetty } } + private static OptionalInt http2StreamId(Request request) { + HttpChannel httpChannel = request.getHttpChannel(); + if (httpChannel == null) return OptionalInt.empty(); + HttpTransport transport = httpChannel.getHttpTransport(); + if (!(transport instanceof HttpTransportOverHTTP2)) return OptionalInt.empty(); + HTTP2Stream stream = (HTTP2Stream) ((HttpTransportOverHTTP2) transport).getStream(); + return OptionalInt.of(stream.getId()); + } + private static <T> void addNonNullValue( RequestLogEntry.Builder builder, T value, BiConsumer<RequestLogEntry.Builder, T> setter) { if (value != null) { 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 cb1e366f843..09b883a620e 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 @@ -127,4 +127,4 @@ maxRequestsPerConnection int default=0 maxConnectionLife double default=0.0 # Enable HTTP/2 (in addition to HTTP/1.1 using ALPN) -http2Enabled bool default=false +http2Enabled bool default=true diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java index 5056cf91d79..0dec711f4c0 100644 --- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java +++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java @@ -35,8 +35,8 @@ import com.yahoo.security.SslContextBuilder; import com.yahoo.security.X509CertificateBuilder; import com.yahoo.security.X509CertificateUtils; import com.yahoo.security.tls.TlsContext; -import org.apache.hc.client5.http.async.methods.SimpleHttpRequests; import org.apache.hc.client5.http.async.methods.SimpleHttpResponse; +import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder; import org.apache.hc.client5.http.entity.mime.FormBodyPart; import org.apache.hc.client5.http.entity.mime.FormBodyPartBuilder; import org.apache.hc.client5.http.entity.mime.StringBody; @@ -523,9 +523,9 @@ public class HttpServerTest { MetricConsumerMock metricConsumer = new MetricConsumerMock(); InMemoryConnectionLog connectionLog = new InMemoryConnectionLog(); JettyTestDriver driver = createSslTestDriver(certificateFile, privateKeyFile, metricConsumer, connectionLog); - try (CloseableHttpAsyncClient client = createHttp2Client(certificateFile, privateKeyFile)) { + try (CloseableHttpAsyncClient client = createHttp2Client(driver)) { String uri = "https://localhost:" + driver.server().getListenPort() + "/status.html"; - SimpleHttpResponse response = client.execute(SimpleHttpRequests.get(uri), null).get(); + SimpleHttpResponse response = client.execute(SimpleRequestBuilder.get(uri).build(), null).get(); assertNull(response.getBodyText()); assertEquals(OK, response.getCode()); } @@ -967,8 +967,7 @@ public class HttpServerTest { return client; } - private static CloseableHttpAsyncClient createHttp2Client(Path certificateFile, Path privateKeyFile) { - JettyTestDriver driver = JettyTestDriver.newInstanceWithSsl(new EchoRequestHandler(), certificateFile, privateKeyFile, TlsClientAuth.WANT); + private static CloseableHttpAsyncClient createHttp2Client(JettyTestDriver driver) { TlsStrategy tlsStrategy = ClientTlsStrategyBuilder.create() .setSslContext(driver.sslContext()) .build(); |