summaryrefslogtreecommitdiffstats
path: root/vespaclient-container-plugin
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2020-09-25 12:00:20 +0200
committerJon Marius Venstad <venstad@gmail.com>2020-09-25 14:19:41 +0200
commit3fe333d33ea24af3f6ebed8e3986db2d82a98bb6 (patch)
treef5b935f797c070e9070e027ded48113fae74c795 /vespaclient-container-plugin
parentc12f4775a03f1d16420a689f0b9d50d35c32413b (diff)
Eliminate code duplication in generating metric context for requests
Diffstat (limited to 'vespaclient-container-plugin')
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java33
1 files changed, 3 insertions, 30 deletions
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 3f2ac74c5ca..c13f2431e1e 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
@@ -29,14 +29,13 @@ import com.yahoo.documentapi.metrics.DocumentOperationType;
import com.yahoo.jdisc.Metric;
import com.yahoo.jdisc.Request;
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.CompletionHandler;
import com.yahoo.jdisc.handler.ContentChannel;
import com.yahoo.jdisc.handler.ReadableContentChannel;
import com.yahoo.jdisc.handler.ResponseHandler;
import com.yahoo.jdisc.handler.UnsafeContentInputStream;
+import com.yahoo.container.core.HandlerMetricContextUtil;
import com.yahoo.jdisc.http.HttpRequest;
import com.yahoo.jdisc.http.HttpRequest.Method;
import com.yahoo.metrics.simple.MetricReceiver;
@@ -49,13 +48,11 @@ import com.yahoo.vespa.config.content.AllClustersBucketSpacesConfig;
import com.yahoo.yolean.Exceptions;
import java.io.InputStream;
-import java.net.URI;
import java.nio.ByteBuffer;
import java.time.Clock;
import java.time.Instant;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -145,9 +142,9 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
@Override
public ContentChannel handleRequest(Request rawRequest, ResponseHandler rawResponseHandler) {
- metric.add("handled.requests", 1, contextFor(rawRequest));
+ metric.add("handled.requests", 1, HandlerMetricContextUtil.contextFor(rawRequest, metric, getClass()));
ResponseHandler responseHandler = response -> {
- metric.set("handled.latency", rawRequest.timeElapsed(TimeUnit.MILLISECONDS), contextFor(rawRequest));
+ metric.set("handled.latency", rawRequest.timeElapsed(TimeUnit.MILLISECONDS), HandlerMetricContextUtil.contextFor(rawRequest, metric, getClass()));
return rawResponseHandler.handleResponse(response);
};
@@ -603,28 +600,4 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
}
- private Metric.Context contextFor(Request request, Map<String, String> extraDimensions) {
- 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 metric.createContext(dimensions);
- }
-
- private Metric.Context contextFor(Request request) { return contextFor(request, Map.of()); }
-
}