diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2020-09-28 20:28:29 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2020-09-28 20:28:29 +0200 |
commit | 6c2b2cb1cea66f7f9dbdb7ac366bdeda00194c60 (patch) | |
tree | e77da383c00e012ce07aab129eca316c7255f518 | |
parent | 29f45f8cfdb15e87d3b0dfe312fdcdc39e84cf41 (diff) |
Common metrics code and abi spec
4 files changed, 16 insertions, 9 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 index 7cfbab0dffa..cfb48339dbe 100644 --- a/container-core/src/main/java/com/yahoo/container/core/HandlerMetricContextUtil.java +++ b/container-core/src/main/java/com/yahoo/container/core/HandlerMetricContextUtil.java @@ -4,18 +4,28 @@ 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 conversion from a handled http request to a metric context. + * 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); } 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 f0583f82cc2..1d48202b7b7 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 @@ -79,8 +79,6 @@ public abstract class ThreadedRequestHandler extends AbstractRequestHandler { return HandlerMetricContextUtil.contextFor(request, extraDimensions, metric, getClass()); } - private Metric.Context contextFor(Request request) { return contextFor(request, Map.of()); } - /** * Handles a request by assigning a worker thread to it. * @@ -88,7 +86,7 @@ public abstract class ThreadedRequestHandler extends AbstractRequestHandler { */ @Override public final ContentChannel handleRequest(Request request, ResponseHandler responseHandler) { - metric.add("handled.requests", 1, contextFor(request)); + HandlerMetricContextUtil.onHandle(request, metric, getClass()); if (request.getTimeout(TimeUnit.SECONDS) == null) { Duration timeout = getTimeout(); if (timeout != null) { @@ -189,8 +187,7 @@ public abstract class ThreadedRequestHandler extends AbstractRequestHandler { public ContentChannel handleResponse(Response response) { if ( tryHasResponded()) throw new IllegalStateException("Response already handled"); ContentChannel cc = responseHandler.handleResponse(response); - long millis = request.timeElapsed(TimeUnit.MILLISECONDS); - metric.set("handled.latency", millis, contextFor(request)); + HandlerMetricContextUtil.onHandled(request, metric, getClass()); return cc; } diff --git a/documentapi/abi-spec.json b/documentapi/abi-spec.json index 0b5d3cd5dce..c8cbc978a8f 100644 --- a/documentapi/abi-spec.json +++ b/documentapi/abi-spec.json @@ -980,7 +980,7 @@ "public com.yahoo.documentapi.Response getNext()", "public com.yahoo.documentapi.Response getNext(int)", "public void destroy()", - "public void setSynchronizer(java.lang.Runnable)", + "public void setPhaser(java.util.concurrent.Phaser)", "public void setResultType(com.yahoo.documentapi.Result$ResultType)" ], "fields": [] diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java index c13f2431e1e..96ea6c08f86 100644 --- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java +++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java @@ -142,9 +142,9 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { @Override public ContentChannel handleRequest(Request rawRequest, ResponseHandler rawResponseHandler) { - metric.add("handled.requests", 1, HandlerMetricContextUtil.contextFor(rawRequest, metric, getClass())); + HandlerMetricContextUtil.onHandle(rawRequest, metric, getClass()); ResponseHandler responseHandler = response -> { - metric.set("handled.latency", rawRequest.timeElapsed(TimeUnit.MILLISECONDS), HandlerMetricContextUtil.contextFor(rawRequest, metric, getClass())); + HandlerMetricContextUtil.onHandled(rawRequest, metric, getClass()); return rawResponseHandler.handleResponse(response); }; |