summaryrefslogtreecommitdiffstats
path: root/container-core
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-09-29 08:10:05 +0200
committerGitHub <noreply@github.com>2020-09-29 08:10:05 +0200
commitc6aded1606112a54969f56403085ca90d61dac8f (patch)
treedb29615090e57241998ec0deb1c55a49632c3623 /container-core
parent09bf1d5f22a7ae98191c94e9be591994b5125557 (diff)
Revert "Jonmv/async doc v1 implementation"
Diffstat (limited to 'container-core')
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/HandlerMetricContextUtil.java54
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java32
2 files changed, 28 insertions, 58 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/core/HandlerMetricContextUtil.java b/container-core/src/main/java/com/yahoo/container/core/HandlerMetricContextUtil.java
deleted file mode 100644
index cfb48339dbe..00000000000
--- a/container-core/src/main/java/com/yahoo/container/core/HandlerMetricContextUtil.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.yahoo.container.core;
-
-import com.yahoo.jdisc.Metric;
-import com.yahoo.jdisc.Request;
-import com.yahoo.jdisc.application.BindingMatch;
-import com.yahoo.jdisc.application.UriPattern;
-import com.yahoo.jdisc.handler.ResponseHandler;
-
-import java.net.URI;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Common HTTP request handler metrics code.
- *
- * @author jonmv
- */
-public class HandlerMetricContextUtil {
-
- public static void onHandle(Request request, Metric metric, Class<?> handlerClass) {
- metric.add("handled.requests", 1, contextFor(request, metric, handlerClass));
- }
-
- public static void onHandled(Request request, Metric metric, Class<?> handlerClass) {
- metric.set("handled.latency", request.timeElapsed(TimeUnit.MILLISECONDS), contextFor(request, metric, handlerClass));
- }
-
- public static Metric.Context contextFor(Request request, Metric metric, Class<?> handlerClass) {
- return contextFor(request, Map.of(), metric, handlerClass);
- }
-
- public static Metric.Context contextFor(Request request, Map<String, String> extraDimensions, Metric metric, Class<?> handlerClass) {
- BindingMatch<?> match = request.getBindingMatch();
- if (match == null) return null;
- UriPattern matched = match.matched();
- if (matched == null) return null;
- String name = matched.toString();
- String endpoint = request.headers().containsKey("Host") ? request.headers().get("Host").get(0) : null;
-
- Map<String, String> dimensions = new HashMap<>();
- dimensions.put("handler", name);
- if (endpoint != null) {
- dimensions.put("endpoint", endpoint);
- }
- URI uri = request.getUri();
- dimensions.put("scheme", uri.getScheme());
- dimensions.put("port", Integer.toString(uri.getPort()));
- dimensions.put("handler-name", handlerClass.getName());
- dimensions.putAll(extraDimensions);
- return metric.createContext(dimensions);
- }
-
-}
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java
index f5f8b428535..ab768dba0d2 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java
@@ -6,6 +6,8 @@ import com.yahoo.jdisc.Metric;
import com.yahoo.jdisc.Request;
import com.yahoo.jdisc.ResourceReference;
import com.yahoo.jdisc.Response;
+import com.yahoo.jdisc.application.BindingMatch;
+import com.yahoo.jdisc.application.UriPattern;
import com.yahoo.jdisc.handler.AbstractRequestHandler;
import com.yahoo.jdisc.handler.BufferedContentChannel;
import com.yahoo.jdisc.handler.ContentChannel;
@@ -13,9 +15,10 @@ import com.yahoo.jdisc.handler.OverloadException;
import com.yahoo.jdisc.handler.ReadableContentChannel;
import com.yahoo.jdisc.handler.ResponseDispatch;
import com.yahoo.jdisc.handler.ResponseHandler;
-import com.yahoo.container.core.HandlerMetricContextUtil;
+import java.net.URI;
import java.time.Duration;
+import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.Executor;
@@ -76,9 +79,29 @@ public abstract class ThreadedRequestHandler extends AbstractRequestHandler {
}
Metric.Context contextFor(Request request, Map<String, String> extraDimensions) {
- return HandlerMetricContextUtil.contextFor(request, extraDimensions, metric, getClass());
+ BindingMatch<?> match = request.getBindingMatch();
+ if (match == null) return null;
+ UriPattern matched = match.matched();
+ if (matched == null) return null;
+ String name = matched.toString();
+ String endpoint = request.headers().containsKey("Host") ? request.headers().get("Host").get(0) : null;
+
+ Map<String, String> dimensions = new HashMap<>();
+ dimensions.put("handler", name);
+ if (endpoint != null) {
+ dimensions.put("endpoint", endpoint);
+ }
+ URI uri = request.getUri();
+ dimensions.put("scheme", uri.getScheme());
+ dimensions.put("port", Integer.toString(uri.getPort()));
+ String handlerClassName = getClass().getName();
+ dimensions.put("handler-name", handlerClassName);
+ dimensions.putAll(extraDimensions);
+ return this.metric.createContext(dimensions);
}
+ private Metric.Context contextFor(Request request) { return contextFor(request, Map.of()); }
+
/**
* Handles a request by assigning a worker thread to it.
*
@@ -86,7 +109,7 @@ public abstract class ThreadedRequestHandler extends AbstractRequestHandler {
*/
@Override
public final ContentChannel handleRequest(Request request, ResponseHandler responseHandler) {
- HandlerMetricContextUtil.onHandle(request, metric, getClass());
+ metric.add("handled.requests", 1, contextFor(request));
if (request.getTimeout(TimeUnit.SECONDS) == null) {
Duration timeout = getTimeout();
if (timeout != null) {
@@ -189,7 +212,8 @@ public abstract class ThreadedRequestHandler extends AbstractRequestHandler {
public ContentChannel handleResponse(Response response) {
if ( tryHasResponded()) throw new IllegalStateException("Response already handled");
ContentChannel cc = responseHandler.handleResponse(response);
- HandlerMetricContextUtil.onHandled(request, metric, getClass());
+ long millis = request.timeElapsed(TimeUnit.MILLISECONDS);
+ metric.set("handled.latency", millis, contextFor(request));
return cc;
}