diff options
11 files changed, 40 insertions, 34 deletions
diff --git a/container-core/abi-spec.json b/container-core/abi-spec.json index f9b146bc669..236586a4132 100644 --- a/container-core/abi-spec.json +++ b/container-core/abi-spec.json @@ -1683,7 +1683,7 @@ "public" ], "methods" : [ - "protected void <init>(com.yahoo.jdisc.service.CurrentContainer, java.net.URI, com.yahoo.jdisc.http.HttpRequest$Method, com.yahoo.jdisc.http.HttpRequest$Version, java.net.SocketAddress, java.lang.Long)", + "protected void <init>(com.yahoo.jdisc.service.CurrentContainer, java.net.URI, com.yahoo.jdisc.http.HttpRequest$Method, com.yahoo.jdisc.http.HttpRequest$Version, java.net.SocketAddress, java.lang.Long, long)", "public com.yahoo.jdisc.http.HttpRequest$Method getMethod()", "public void setMethod(com.yahoo.jdisc.http.HttpRequest$Method)", "public com.yahoo.jdisc.http.HttpRequest$Version getVersion()", @@ -1713,7 +1713,7 @@ "public static com.yahoo.jdisc.http.HttpRequest newServerRequest(com.yahoo.jdisc.service.CurrentContainer, java.net.URI, com.yahoo.jdisc.http.HttpRequest$Method)", "public static com.yahoo.jdisc.http.HttpRequest newServerRequest(com.yahoo.jdisc.service.CurrentContainer, java.net.URI, com.yahoo.jdisc.http.HttpRequest$Method, com.yahoo.jdisc.http.HttpRequest$Version)", "public static com.yahoo.jdisc.http.HttpRequest newServerRequest(com.yahoo.jdisc.service.CurrentContainer, java.net.URI, com.yahoo.jdisc.http.HttpRequest$Method, com.yahoo.jdisc.http.HttpRequest$Version, java.net.SocketAddress)", - "public static com.yahoo.jdisc.http.HttpRequest newServerRequest(com.yahoo.jdisc.service.CurrentContainer, java.net.URI, com.yahoo.jdisc.http.HttpRequest$Method, com.yahoo.jdisc.http.HttpRequest$Version, java.net.SocketAddress, long)", + "public static com.yahoo.jdisc.http.HttpRequest newServerRequest(com.yahoo.jdisc.service.CurrentContainer, java.net.URI, com.yahoo.jdisc.http.HttpRequest$Method, com.yahoo.jdisc.http.HttpRequest$Version, java.net.SocketAddress, long, long)", "public static com.yahoo.jdisc.http.HttpRequest newClientRequest(com.yahoo.jdisc.Request, java.net.URI)", "public static com.yahoo.jdisc.http.HttpRequest newClientRequest(com.yahoo.jdisc.Request, java.net.URI, com.yahoo.jdisc.http.HttpRequest$Method)", "public static com.yahoo.jdisc.http.HttpRequest newClientRequest(com.yahoo.jdisc.Request, java.net.URI, com.yahoo.jdisc.http.HttpRequest$Method, com.yahoo.jdisc.http.HttpRequest$Version)" diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/HttpRequest.java b/container-core/src/main/java/com/yahoo/jdisc/http/HttpRequest.java index 4ad38a9f965..877140a94d7 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/HttpRequest.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/HttpRequest.java @@ -81,9 +81,9 @@ public class HttpRequest extends Request { private Long connectionTimeout; protected HttpRequest(CurrentContainer container, URI uri, Method method, Version version, - SocketAddress remoteAddress, Long connectedAtMillis) + SocketAddress remoteAddress, Long connectedAtMillis, long creationTime) { - super(container, uri); + super(container, uri, true, creationTime); try { this.method = method; this.version = version; @@ -313,13 +313,13 @@ public class HttpRequest extends Request { public static HttpRequest newServerRequest(CurrentContainer container, URI uri, Method method, Version version, SocketAddress remoteAddress) { - return new HttpRequest(container, uri, method, version, remoteAddress, null); + return new HttpRequest(container, uri, method, version, remoteAddress, null, -1); } public static HttpRequest newServerRequest(CurrentContainer container, URI uri, Method method, Version version, - SocketAddress remoteAddress, long connectedAtMillis) + SocketAddress remoteAddress, long connectedAtMillis, long creationTime) { - return new HttpRequest(container, uri, method, version, remoteAddress, connectedAtMillis); + return new HttpRequest(container, uri, method, version, remoteAddress, connectedAtMillis, creationTime); } public static HttpRequest newClientRequest(Request parent, URI uri) { diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/util/FilterTestUtils.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/util/FilterTestUtils.java index 147c13c8e3a..f3ad631f136 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/util/FilterTestUtils.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/util/FilterTestUtils.java @@ -76,7 +76,7 @@ public class FilterTestUtils { public DiscFilterRequest build() { var httpReq = HttpRequest.newServerRequest( - new DummyContainer(clock), uri, method, version, remoteAddress, clock.millis()); + new DummyContainer(clock), uri, method, version, remoteAddress, clock.millis(), clock.millis()); var filterReq = new DiscFilterRequest(httpReq); filterReq.setUserPrincipal(principal); attributes.forEach(filterReq::setAttribute); diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactory.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactory.java index 1aa12808f71..8c8109fa518 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactory.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactory.java @@ -26,19 +26,21 @@ class HttpRequestFactory { public static HttpRequest newJDiscRequest(CurrentContainer container, HttpServletRequest servletRequest) { try { - HttpRequest httpRequest = HttpRequest.newServerRequest( + var jettyRequest = (Request) servletRequest; + var jdiscHttpReq = HttpRequest.newServerRequest( container, getUri(servletRequest), getMethod(servletRequest), HttpRequest.Version.fromString(servletRequest.getProtocol()), new InetSocketAddress(servletRequest.getRemoteAddr(), servletRequest.getRemotePort()), - getConnection((Request) servletRequest).getCreatedTimeStamp()); - httpRequest.context().put(RequestUtils.JDISC_REQUEST_X509CERT, getCertChain(servletRequest)); - httpRequest.context().put(RequestUtils.JDICS_REQUEST_PORT, servletRequest.getLocalPort()); + getConnection(jettyRequest).getCreatedTimeStamp(), + jettyRequest.getTimeStamp()); + jdiscHttpReq.context().put(RequestUtils.JDISC_REQUEST_X509CERT, getCertChain(servletRequest)); + jdiscHttpReq.context().put(RequestUtils.JDICS_REQUEST_PORT, servletRequest.getLocalPort()); SSLSession sslSession = (SSLSession) servletRequest.getAttribute(RequestUtils.JETTY_REQUEST_SSLSESSION); - httpRequest.context().put(RequestUtils.JDISC_REQUEST_SSLSESSION, sslSession); - servletRequest.setAttribute(HttpRequest.class.getName(), httpRequest); - return httpRequest; + jdiscHttpReq.context().put(RequestUtils.JDISC_REQUEST_SSLSESSION, sslSession); + servletRequest.setAttribute(HttpRequest.class.getName(), jdiscHttpReq); + return jdiscHttpReq; } catch (Utf8Appendable.NotUtf8Exception e) { throw createBadQueryException(e); } diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java b/container-core/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java index 30e58f6d2f5..16ee274d8e0 100644 --- a/container-core/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java +++ b/container-core/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java @@ -74,7 +74,7 @@ public class HttpRequestTestCase { URI uri = URI.create("http://localhost/path?foo=bar&foo=baz&cox=69"); InetSocketAddress address = new InetSocketAddress("remotehost", 69); final HttpRequest request = HttpRequest.newServerRequest(mockContainer(), uri, HttpRequest.Method.GET, - HttpRequest.Version.HTTP_1_1, address, 1L); + HttpRequest.Version.HTTP_1_1, address, 1L, 1); assertEquals(uri, request.getUri()); assertEquals(HttpRequest.Method.GET, request.getMethod()); diff --git a/container-search/src/test/java/com/yahoo/search/searchers/test/ConnectionControlSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/searchers/test/ConnectionControlSearcherTestCase.java index 5323149ae1d..df9d2078c41 100644 --- a/container-search/src/test/java/com/yahoo/search/searchers/test/ConnectionControlSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/searchers/test/ConnectionControlSearcherTestCase.java @@ -1,18 +1,6 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.search.searchers.test; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.io.ByteArrayInputStream; -import java.net.SocketAddress; -import java.net.URI; -import java.net.URISyntaxException; - -import org.junit.jupiter.api.Test; import com.yahoo.component.chain.Chain; import com.yahoo.container.jdisc.HttpRequest; import com.yahoo.jdisc.Container; @@ -24,6 +12,18 @@ import com.yahoo.search.Result; import com.yahoo.search.Searcher; import com.yahoo.search.searchchain.Execution; import com.yahoo.search.searchers.ConnectionControlSearcher; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayInputStream; +import java.net.SocketAddress; +import java.net.URI; +import java.net.URISyntaxException; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; /** * Functionality tests for @@ -88,7 +88,7 @@ public class ConnectionControlSearcherTestCase { when(container.newReference(any())).thenReturn(mock(Container.class)); when(container.newReference(any(URI.class), any(Object.class))).thenReturn(mock(Container.class)); final com.yahoo.jdisc.http.HttpRequest serverRequest = com.yahoo.jdisc.http.HttpRequest - .newServerRequest(container, uri, method, version, remoteAddress, connectedAtMillis); + .newServerRequest(container, uri, method, version, remoteAddress, connectedAtMillis, connectedAtMillis); HttpRequest incoming = new HttpRequest(serverRequest, new ByteArrayInputStream(new byte[0])); Query query = new Query(incoming); Execution e = new Execution(new Chain<Searcher>(ConnectionControlSearcher.createTestInstance(() -> nowMillis)), diff --git a/document/abi-spec.json b/document/abi-spec.json index f3ed7c389a1..6129ea991d5 100644 --- a/document/abi-spec.json +++ b/document/abi-spec.json @@ -3551,4 +3551,4 @@ "protected com.yahoo.document.update.ValueUpdate$ValueUpdateClassID valueUpdateClassID" ] } -} +}
\ No newline at end of file diff --git a/documentapi/abi-spec.json b/documentapi/abi-spec.json index 73ad4b1d121..7662258037c 100644 --- a/documentapi/abi-spec.json +++ b/documentapi/abi-spec.json @@ -3207,4 +3207,4 @@ ], "fields" : [ ] } -} +}
\ No newline at end of file diff --git a/hosted-zone-api/abi-spec.json b/hosted-zone-api/abi-spec.json index 6986c85ad29..e96246bcbaa 100644 --- a/hosted-zone-api/abi-spec.json +++ b/hosted-zone-api/abi-spec.json @@ -133,4 +133,4 @@ ], "fields" : [ ] } -} +}
\ No newline at end of file diff --git a/jdisc_core/abi-spec.json b/jdisc_core/abi-spec.json index acacccb4241..31594fed155 100644 --- a/jdisc_core/abi-spec.json +++ b/jdisc_core/abi-spec.json @@ -175,6 +175,7 @@ "methods" : [ "public void <init>(com.yahoo.jdisc.service.CurrentContainer, java.net.URI)", "public void <init>(com.yahoo.jdisc.service.CurrentContainer, java.net.URI, boolean)", + "public void <init>(com.yahoo.jdisc.service.CurrentContainer, java.net.URI, boolean, long)", "public void <init>(com.yahoo.jdisc.Request, java.net.URI)", "public com.yahoo.jdisc.Container container()", "public java.net.URI getUri()", diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/Request.java b/jdisc_core/src/main/java/com/yahoo/jdisc/Request.java index c219ae06846..7b63eba86b5 100644 --- a/jdisc_core/src/main/java/com/yahoo/jdisc/Request.java +++ b/jdisc_core/src/main/java/com/yahoo/jdisc/Request.java @@ -82,15 +82,18 @@ public class Request extends AbstractResource { this(current, uri, true); } - public Request(CurrentContainer current, URI uri, boolean isServerRequest) { + public Request(CurrentContainer current, URI uri, boolean isServerRequest) { this(current, uri, isServerRequest, -1); } + + public Request(CurrentContainer current, URI uri, boolean isServerRequest, long creationTime) { parent = null; parentReference = null; serverRequest = isServerRequest; this.uri = uri.normalize(); container = current.newReference(uri, this); - creationTime = container.currentTimeMillis(); + this.creationTime = creationTime >= 0 ? creationTime : container.currentTimeMillis(); } + /** * <p>Creates a new instance of this class. As a {@link RequestHandler} you should use this method to spawn child * Requests of another. As a {@link ServerProvider} that needs to spawn new Requests, us the {@link |