summaryrefslogtreecommitdiffstats
path: root/jdisc_http_service
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2019-04-04 15:27:41 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2019-04-04 15:27:41 +0200
commit8d32689ff1b06c554c245231840e5d2b3695e092 (patch)
tree740b0116f940ab1085294979ffa5836562c50f45 /jdisc_http_service
parent712b0d422e805b25f27803f66536e6676be8397d (diff)
Add scheme as dimension to request metrics
Diffstat (limited to 'jdisc_http_service')
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java31
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java1
2 files changed, 30 insertions, 2 deletions
diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java
index 6b371473a57..556d80d3772 100644
--- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java
+++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java
@@ -17,6 +17,7 @@ import java.net.SocketException;
import java.nio.channels.ServerSocketChannel;
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -28,7 +29,7 @@ class JDiscServerConnector extends ServerConnector {
public static final String REQUEST_ATTRIBUTE = JDiscServerConnector.class.getName();
private final static Logger log = Logger.getLogger(JDiscServerConnector.class.getName());
private final Metric.Context metricCtx;
- private final Map<String, Metric.Context> requestMetricContextCache = new ConcurrentHashMap<>();
+ private final Map<RequestDimensions, Metric.Context> requestMetricContextCache = new ConcurrentHashMap<>();
private final ServerConnectionStatistics statistics;
private final boolean tcpKeepAlive;
private final boolean tcpNoDelay;
@@ -124,9 +125,12 @@ class JDiscServerConnector extends ServerConnector {
public Metric.Context getRequestMetricContext(HttpServletRequest request) {
String method = request.getMethod();
- return requestMetricContextCache.computeIfAbsent(method, ignored -> {
+ String scheme = request.getScheme();
+ var requestDimensions = new RequestDimensions(method, scheme);
+ return requestMetricContextCache.computeIfAbsent(requestDimensions, ignored -> {
Map<String, Object> dimensions = createConnectorDimensions(listenPort, connectorName);
dimensions.put(JettyHttpServer.Metrics.METHOD_DIMENSION, method);
+ dimensions.put(JettyHttpServer.Metrics.SCHEME_DIMENSION, scheme);
return metric.createContext(dimensions);
});
}
@@ -142,4 +146,27 @@ class JDiscServerConnector extends ServerConnector {
return props;
}
+ private static class RequestDimensions {
+ final String method;
+ final String scheme;
+
+ RequestDimensions(String method, String scheme) {
+ this.method = method;
+ this.scheme = scheme;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ RequestDimensions that = (RequestDimensions) o;
+ return Objects.equals(method, that.method) && Objects.equals(scheme, that.scheme);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(method, scheme);
+ }
+ }
+
}
diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java
index 0dbc5f59f67..49ae54f7db3 100644
--- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java
+++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java
@@ -71,6 +71,7 @@ public class JettyHttpServer extends AbstractServerProvider {
String NAME_DIMENSION = "serverName";
String PORT_DIMENSION = "serverPort";
String METHOD_DIMENSION = "httpMethod";
+ String SCHEME_DIMENSION = "scheme";
String NUM_OPEN_CONNECTIONS = "serverNumOpenConnections";
String NUM_CONNECTIONS_OPEN_MAX = "serverConnectionsOpenMax";