diff options
author | Harald Musum <musum@verizonmedia.com> | 2020-09-29 08:10:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-29 08:10:05 +0200 |
commit | c6aded1606112a54969f56403085ca90d61dac8f (patch) | |
tree | db29615090e57241998ec0deb1c55a49632c3623 /container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java | |
parent | 09bf1d5f22a7ae98191c94e9be591994b5125557 (diff) |
Revert "Jonmv/async doc v1 implementation"
Diffstat (limited to 'container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java')
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java | 32 |
1 files changed, 28 insertions, 4 deletions
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; } |