aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahooinc.com>2023-04-27 13:28:47 +0200
committerBjørn Christian Seime <bjorncs@yahooinc.com>2023-04-27 13:57:02 +0200
commitc688e62a1fa657aede46ebbd51bcdb4433aa2cb6 (patch)
tree1706fbac2f0c5d694831622ab5e2d05a6021f19a
parent139646116e78288ee7c53f92a17802e7e329e6c0 (diff)
Use timestamp from Jetty as creation time for Request/HttpRequest
-rw-r--r--container-core/abi-spec.json4
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/HttpRequest.java10
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/util/FilterTestUtils.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactory.java16
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchers/test/ConnectionControlSearcherTestCase.java26
-rw-r--r--document/abi-spec.json2
-rw-r--r--documentapi/abi-spec.json2
-rw-r--r--hosted-zone-api/abi-spec.json2
-rw-r--r--jdisc_core/abi-spec.json1
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/Request.java7
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