diff options
3 files changed, 24 insertions, 6 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/handler/Coverage.java b/container-core/src/main/java/com/yahoo/container/handler/Coverage.java index 9f63ff6e68c..481e3f5ba97 100644 --- a/container-core/src/main/java/com/yahoo/container/handler/Coverage.java +++ b/container-core/src/main/java/com/yahoo/container/handler/Coverage.java @@ -17,6 +17,7 @@ public class Coverage { protected long soonActive; protected int degradedReason; protected int nodes; + private int nodesTried; protected int resultSets; protected int fullResultSets; @@ -34,8 +35,7 @@ public class Coverage { /** * Build an invalid instance to initiate manually. */ - protected Coverage() { - } + protected Coverage() { } protected Coverage(long docs, long active, int nodes, int resultSets) { this(docs, active, nodes, resultSets, FullCoverageDefinition.DOCUMENT_COUNT); @@ -53,6 +53,7 @@ public class Coverage { private Coverage(long docs, long active, int nodes, int resultSets, FullCoverageDefinition fullReason) { this.docs = docs; this.nodes = nodes; + this.nodesTried = nodes; this.active = active; this.soonActive = active; this.degradedReason = 0; @@ -67,6 +68,7 @@ public class Coverage { } docs += other.getDocs(); nodes += other.getNodes(); + nodesTried += other.nodesTried; active += other.getActive(); soonActive += other.getSoonActive(); degradedReason |= other.degradedReason; @@ -137,13 +139,22 @@ public class Coverage { } /** - * @return the number of search instances which participated in the search. + * @return the number of search instances which participated successfully in the search. */ public int getNodes() { return nodes; } /** + * @return the number of search instances which tried to participate in the search. + */ + public int getNodesTried() { + return nodesTried; + } + + public Coverage setNodesTried(int nodesTried) { this.nodesTried = nodesTried; return this; } + + /** * A Coverage instance contains coverage information for potentially more * than one search. If several queries, e.g. through blending of results * from multiple clusters, produced a result set, this number will show how diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java index ea354e1291f..3320c167702 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java @@ -465,9 +465,10 @@ public abstract class VespaBackEndSearcher extends PingableSearcher { } if (resultPacket.getCoverageFeature()) { - result.setCoverage(new Coverage(resultPacket.getCoverageDocs(), resultPacket.getActiveDocs()) + result.setCoverage(new Coverage(resultPacket.getCoverageDocs(), resultPacket.getActiveDocs(), resultPacket.getNodesReplied()) .setSoonActive(resultPacket.getSoonActiveDocs()) - .setDegradedReason(resultPacket.getDegradedReason())); + .setDegradedReason(resultPacket.getDegradedReason()) + .setNodesTried(resultPacket.getNodesQueried())); } } diff --git a/container-search/src/main/java/com/yahoo/search/result/Coverage.java b/container-search/src/main/java/com/yahoo/search/result/Coverage.java index bd1245ea2ff..81aa4a08f18 100644 --- a/container-search/src/main/java/com/yahoo/search/result/Coverage.java +++ b/container-search/src/main/java/com/yahoo/search/result/Coverage.java @@ -12,7 +12,11 @@ import com.google.common.annotations.Beta; public class Coverage extends com.yahoo.container.handler.Coverage { public Coverage(long docs, long active) { - super(docs, active, 0, 1); + this(docs, active, 0); + } + + public Coverage(long docs, long active, int nodes) { + super(docs, active, nodes, 1); } @Deprecated @@ -40,4 +44,6 @@ public class Coverage extends com.yahoo.container.handler.Coverage { */ public Coverage setDegradedReason(int degradedReason) { this.degradedReason = degradedReason; return this; } + public Coverage setNodesTried(int nodesTried) { super.setNodesTried(nodesTried); return this; } + } |