aboutsummaryrefslogtreecommitdiffstats
path: root/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java')
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java40
1 files changed, 34 insertions, 6 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 a102e8fffd4..2a7e69a0bf4 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
@@ -34,6 +34,7 @@ import com.yahoo.documentapi.DocumentAccess;
import com.yahoo.documentapi.DocumentOperationParameters;
import com.yahoo.documentapi.DocumentResponse;
import com.yahoo.documentapi.ProgressToken;
+import com.yahoo.documentapi.Response.Outcome;
import com.yahoo.documentapi.Result;
import com.yahoo.documentapi.VisitorControlHandler;
import com.yahoo.documentapi.VisitorDataHandler;
@@ -65,6 +66,7 @@ import com.yahoo.restapi.Path;
import com.yahoo.search.query.ParameterParser;
import com.yahoo.text.Text;
import com.yahoo.vespa.config.content.AllClustersBucketSpacesConfig;
+import com.yahoo.vespa.http.server.MetricNames;
import com.yahoo.yolean.Exceptions;
import com.yahoo.yolean.Exceptions.RunnableThrowingIOException;
@@ -93,8 +95,6 @@ import java.util.concurrent.Executors;
import java.util.concurrent.Phaser;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.locks.Lock;
@@ -450,7 +450,8 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
DocumentOperationParameters parameters = parametersFromRequest(request, ROUTE)
.withResponseHandler(response -> {
outstanding.decrementAndGet();
- handle(path, handler, response);
+ updatePutMetrics(response.outcome());
+ handleFeedOperation(path, handler, response);
});
return () -> dispatchOperation(() -> asyncSession.put(put, parameters));
});
@@ -467,7 +468,8 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
DocumentOperationParameters parameters = parametersFromRequest(request, ROUTE)
.withResponseHandler(response -> {
outstanding.decrementAndGet();
- handle(path, handler, response);
+ updateUpdateMetrics(response.outcome());
+ handleFeedOperation(path, handler, response);
});
return () -> dispatchOperation(() -> asyncSession.update(update, parameters));
});
@@ -482,7 +484,8 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
DocumentOperationParameters parameters = parametersFromRequest(request, ROUTE)
.withResponseHandler(response -> {
outstanding.decrementAndGet();
- handle(path, handler, response);
+ updateRemoveMetrics(response.outcome());
+ handleFeedOperation(path, handler, response);
});
return () -> dispatchOperation(() -> asyncSession.remove(remove, parameters));
});
@@ -1032,10 +1035,35 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
}
}
- private static void handle(DocumentPath path, ResponseHandler handler, com.yahoo.documentapi.Response response) {
+ private static void handleFeedOperation(DocumentPath path, ResponseHandler handler, com.yahoo.documentapi.Response response) {
handle(path, handler, response, (document, jsonResponse) -> jsonResponse.commit(Response.Status.OK));
}
+ private void updatePutMetrics(Outcome outcome) {
+ switch (outcome) {
+ case SUCCESS: metric.add(MetricNames.SUCCEEDED, 1, null); break;
+ case CONDITION_FAILED: metric.add(MetricNames.CONDITION_NOT_MET, 1, null); break;
+ default: metric.add(MetricNames.FAILED, 1, null); break;
+ }
+ }
+
+ private void updateUpdateMetrics(Outcome outcome) {
+ switch (outcome) {
+ case SUCCESS: metric.add(MetricNames.SUCCEEDED, 1, null); break;
+ case NOT_FOUND: metric.add(MetricNames.NOT_FOUND, 1, null); break;
+ case CONDITION_FAILED: metric.add(MetricNames.CONDITION_NOT_MET, 1, null); break;
+ default: metric.add(MetricNames.FAILED, 1, null); break;
+ }
+ }
+
+ private void updateRemoveMetrics(Outcome outcome) {
+ switch (outcome) {
+ case SUCCESS: metric.add(MetricNames.SUCCEEDED, 1, null); break;
+ case CONDITION_FAILED: metric.add(MetricNames.CONDITION_NOT_MET, 1, null); break;
+ default: metric.add(MetricNames.FAILED, 1, null); break;
+ }
+ }
+
// ------------------------------------------------- Visits ------------------------------------------------
private VisitorParameters parseGetParameters(HttpRequest request, DocumentPath path, boolean streamed) {