summaryrefslogtreecommitdiffstats
path: root/vespaclient-container-plugin
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahooinc.com>2022-12-07 15:39:40 +0100
committerBjørn Christian Seime <bjorncs@yahooinc.com>2022-12-07 15:39:40 +0100
commitd64bf3a03c485517a83c8fc3dbab03da212821f2 (patch)
tree3d5ae4d2e8e51dee6cd7f881d4a1ae8c9c3d1c3f /vespaclient-container-plugin
parent9256dcdb6f59b5d03a90ef11f2c47bf838a9a22a (diff)
Aggregate 'feed.http-requests' for /document/v1
Diffstat (limited to 'vespaclient-container-plugin')
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java24
1 files changed, 20 insertions, 4 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 7ef9a3f4a7e..6ad6fe2b1e2 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
@@ -116,6 +116,7 @@ import static com.yahoo.jdisc.http.HttpRequest.Method.GET;
import static com.yahoo.jdisc.http.HttpRequest.Method.OPTIONS;
import static com.yahoo.jdisc.http.HttpRequest.Method.POST;
import static com.yahoo.jdisc.http.HttpRequest.Method.PUT;
+import static com.yahoo.vespa.http.server.Headers.CLIENT_VERSION;
import static java.util.Objects.requireNonNull;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static java.util.logging.Level.FINE;
@@ -449,7 +450,8 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
}
private ContentChannel postDocument(HttpRequest request, DocumentPath path, ResponseHandler rawHandler) {
- ResponseHandler handler = new MeasuringResponseHandler(rawHandler, com.yahoo.documentapi.metrics.DocumentOperationType.PUT, clock.instant());
+ ResponseHandler handler = new MeasuringResponseHandler(
+ request, rawHandler, com.yahoo.documentapi.metrics.DocumentOperationType.PUT, clock.instant());
if (getProperty(request, DRY_RUN, booleanParser).orElse(false)) {
handleFeedOperation(path, true, handler, new com.yahoo.documentapi.Response(-1));
return ignoredContent;
@@ -471,7 +473,8 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
}
private ContentChannel putDocument(HttpRequest request, DocumentPath path, ResponseHandler rawHandler) {
- ResponseHandler handler = new MeasuringResponseHandler(rawHandler, com.yahoo.documentapi.metrics.DocumentOperationType.UPDATE, clock.instant());
+ ResponseHandler handler = new MeasuringResponseHandler(
+ request, rawHandler, com.yahoo.documentapi.metrics.DocumentOperationType.UPDATE, clock.instant());
if (getProperty(request, DRY_RUN, booleanParser).orElse(false)) {
handleFeedOperation(path, true, handler, new com.yahoo.documentapi.Response(-1));
return ignoredContent;
@@ -495,7 +498,8 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
}
private ContentChannel deleteDocument(HttpRequest request, DocumentPath path, ResponseHandler rawHandler) {
- ResponseHandler handler = new MeasuringResponseHandler(rawHandler, com.yahoo.documentapi.metrics.DocumentOperationType.REMOVE, clock.instant());
+ ResponseHandler handler = new MeasuringResponseHandler(
+ request, rawHandler, com.yahoo.documentapi.metrics.DocumentOperationType.REMOVE, clock.instant());
if (getProperty(request, DRY_RUN, booleanParser).orElse(false)) {
handleFeedOperation(path, true, handler, new com.yahoo.documentapi.Response(-1));
return ignoredContent;
@@ -1455,8 +1459,13 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
private final ResponseHandler delegate;
private final com.yahoo.documentapi.metrics.DocumentOperationType type;
private final Instant start;
+ private final HttpRequest request;
- private MeasuringResponseHandler(ResponseHandler delegate, com.yahoo.documentapi.metrics.DocumentOperationType type, Instant start) {
+ private MeasuringResponseHandler(HttpRequest request,
+ ResponseHandler delegate,
+ com.yahoo.documentapi.metrics.DocumentOperationType type,
+ Instant start) {
+ this.request = request;
this.delegate = delegate;
this.type = type;
this.start = start;
@@ -1473,11 +1482,18 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
case 500,502,503,504,507 -> report(DocumentOperationStatus.SERVER_ERROR);
default -> throw new IllegalStateException("Unexpected status code '%s'".formatted(response.getStatus()));
}
+ metrics.reportHttpRequest(clientVersion());
return delegate.handleResponse(response);
}
private void report(DocumentOperationStatus... status) { metrics.report(type, start, status); }
+ private String clientVersion() {
+ return Optional.ofNullable(request.headers().get(Headers.CLIENT_VERSION))
+ .filter(l -> !l.isEmpty()).map(l -> l.get(0))
+ .orElse("unknown");
+ }
+
}
static class StorageCluster {