diff options
author | Jon Bratseth <bratseth@oath.com> | 2021-12-22 21:48:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-22 21:48:35 +0100 |
commit | 1d4b3a4fd57e94c8113ffb47d600e82ee20bafc7 (patch) | |
tree | 1f13d915ad27ee923141c126470abf67d25b3037 | |
parent | 31fa02117b58f431c4775f02a1bb70cd1229969b (diff) | |
parent | 93de1e70997a1075cfc7cb8a61f13c1e9fee238c (diff) |
Merge pull request #20619 from vespa-engine/jonmv/fix-metric-for-doc-v1
Jonmv/fix metric for doc v1
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) { |