summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2021-12-22 21:48:35 +0100
committerGitHub <noreply@github.com>2021-12-22 21:48:35 +0100
commit1d4b3a4fd57e94c8113ffb47d600e82ee20bafc7 (patch)
tree1f13d915ad27ee923141c126470abf67d25b3037
parent31fa02117b58f431c4775f02a1bb70cd1229969b (diff)
parent93de1e70997a1075cfc7cb8a61f13c1e9fee238c (diff)
Merge pull request #20619 from vespa-engine/jonmv/fix-metric-for-doc-v1
Jonmv/fix metric for doc v1
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java5
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReplyReader.java11
2 files changed, 13 insertions, 3 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 2a7e69a0bf4..3eac4ff5c5d 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
@@ -468,7 +468,7 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
DocumentOperationParameters parameters = parametersFromRequest(request, ROUTE)
.withResponseHandler(response -> {
outstanding.decrementAndGet();
- updateUpdateMetrics(response.outcome());
+ updateUpdateMetrics(response.outcome(), update.getCreateIfNonExistent());
handleFeedOperation(path, handler, response);
});
return () -> dispatchOperation(() -> asyncSession.update(update, parameters));
@@ -1047,7 +1047,8 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
}
}
- private void updateUpdateMetrics(Outcome outcome) {
+ private void updateUpdateMetrics(Outcome outcome, boolean create) {
+ if (create && outcome == Outcome.NOT_FOUND) outcome = Outcome.SUCCESS; // >_<
switch (outcome) {
case SUCCESS: metric.add(MetricNames.SUCCEEDED, 1, null); break;
case NOT_FOUND: metric.add(MetricNames.NOT_FOUND, 1, null); break;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReplyReader.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReplyReader.java
index b71b5d79520..2fbb80d9fcc 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReplyReader.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReplyReader.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.http.server;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
+import com.yahoo.documentapi.messagebus.protocol.UpdateDocumentMessage;
import com.yahoo.documentapi.messagebus.protocol.UpdateDocumentReply;
import com.yahoo.documentapi.metrics.DocumentApiMetrics;
import com.yahoo.documentapi.metrics.DocumentOperationStatus;
@@ -14,9 +15,13 @@ import com.yahoo.vespa.http.client.core.ErrorCode;
import com.yahoo.vespa.http.client.core.OperationStatus;
import java.util.Map;
+import java.util.Optional;
+import java.util.function.Predicate;
import java.util.logging.Level;
import java.util.logging.Logger;
+import static java.util.function.Predicate.not;
+
/**
* Catch message bus replies and make the available to a given session.
*
@@ -68,7 +73,11 @@ public class FeedReplyReader implements ReplyHandler {
}
private static boolean updateNotFound(Reply reply) {
- return reply instanceof UpdateDocumentReply && ! ((UpdateDocumentReply) reply).wasFound();
+ return reply instanceof UpdateDocumentReply
+ && ! ((UpdateDocumentReply) reply).wasFound()
+ && reply.getMessage() instanceof UpdateDocumentMessage
+ && ((UpdateDocumentMessage) reply.getMessage()).getDocumentUpdate() != null
+ && ! ((UpdateDocumentMessage) reply.getMessage()).getDocumentUpdate().getCreateIfNonExistent();
}
private void enqueue(ReplyContext context, String message, ErrorCode status, boolean isConditionNotMet, Trace trace) {