diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-09-19 13:55:55 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-09-19 14:07:37 +0200 |
commit | 7d9ef2e10605f4af700a37a5c79a0a789fac527d (patch) | |
tree | 7f99d8adc579cc51cca5bd8160d786320a054b97 /container-core | |
parent | 2eeb7b8098d64290f3c08469457eaa76dd1bef05 (diff) |
Control whether to report coverage based on active or target active documents.
Diffstat (limited to 'container-core')
4 files changed, 27 insertions, 17 deletions
diff --git a/container-core/abi-spec.json b/container-core/abi-spec.json index 6e4fc74fdc6..e39391fa4a3 100644 --- a/container-core/abi-spec.json +++ b/container-core/abi-spec.json @@ -200,7 +200,6 @@ "public" ], "methods": [ - "protected void <init>()", "protected void <init>(long, long, int, int)", "public void <init>(long, int, boolean)", "protected void <init>(long, int, boolean, int)", @@ -220,6 +219,7 @@ "public int getFullResultSets()", "public int getResultSets()", "public int getResultPercentage()", + "public com.yahoo.container.handler.Coverage useTargetActiveForCoverageComputation(boolean)", "public com.yahoo.container.logging.Coverage toLoggingCoverage()" ], "fields": [ 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 3f8d085af9e..fdcd225ddf5 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 @@ -1,6 +1,8 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.container.handler; +import com.yahoo.api.annotations.Beta; + /** * The coverage report for a result set. * @@ -9,6 +11,7 @@ package com.yahoo.container.handler; */ public class Coverage { + private boolean useTargetActiveForCoverageComputation = false; protected long docs; protected long active; protected long targetActive; @@ -29,11 +32,6 @@ public class Coverage { public final static int DEGRADED_BY_TIMEOUT = 2; public final static int DEGRADED_BY_ADAPTIVE_TIMEOUT = 4; - /** - * Build an invalid instance to initiate manually. - */ - protected Coverage() { } - protected Coverage(long docs, long active, int nodes, int resultSets) { this(docs, active, nodes, resultSets, FullCoverageDefinition.DOCUMENT_COUNT); } @@ -164,17 +162,28 @@ public class Coverage { if (getResultSets() == 0) { return 0; } - if (docs < active) { - return (int) Math.round(docs * 100.0d / active); + long total = useTargetActiveForCoverageComputation ? targetActive : active; + if (docs < total) { + return (int) Math.round(docs * 100.0d / total); } return getFullResultSets() * 100 / getResultSets(); } + /** + * Decides whether active or target active shall be used for coverage computation. + * DO NOT USE - This is only for temporary internal use. + */ + @Beta + public Coverage useTargetActiveForCoverageComputation(boolean value) { + useTargetActiveForCoverageComputation = value; + return this; + } + public com.yahoo.container.logging.Coverage toLoggingCoverage() { int degradation = com.yahoo.container.logging.Coverage.toDegradation(isDegradedByMatchPhase(), isDegradedByTimeout(), isDegradedByAdapativeTimeout()); - return new com.yahoo.container.logging.Coverage(getDocs(), getActive(), getTargetActive(), degradation); + return new com.yahoo.container.logging.Coverage(getDocs(), getActive(), getTargetActive(), degradation, useTargetActiveForCoverageComputation); } } diff --git a/container-core/src/main/java/com/yahoo/container/logging/Coverage.java b/container-core/src/main/java/com/yahoo/container/logging/Coverage.java index 98d685393dc..c016a203256 100644 --- a/container-core/src/main/java/com/yahoo/container/logging/Coverage.java +++ b/container-core/src/main/java/com/yahoo/container/logging/Coverage.java @@ -9,14 +9,19 @@ public class Coverage { private final long active; private final long targetActive; private final int degradedReason; + private final boolean useTargetActiveForCoverageComputation; private final static int DEGRADED_BY_MATCH_PHASE = 1; private final static int DEGRADED_BY_TIMEOUT = 2; private final static int DEGRADED_BY_ADAPTIVE_TIMEOUT = 4; - public Coverage(long docs, long active, long targetActive, int degradedReason) { + public Coverage(long docs, long active, long targetActive, int degradedReason, boolean useTargetActiveForCoverageComputation) { this.docs = docs; this.active = active; this.targetActive = targetActive; this.degradedReason = degradedReason; + this.useTargetActiveForCoverageComputation = useTargetActiveForCoverageComputation; + } + Coverage(long docs, long active, long targetActive, int degradedReason) { + this(docs, active, targetActive, degradedReason, true); } public long getDocs() { @@ -55,8 +60,9 @@ public class Coverage { * about had. */ public int getResultPercentage() { - if (docs < active) { - return (int) Math.round(docs * 100.0d / active); + long total = useTargetActiveForCoverageComputation ? targetActive : active; + if (docs < total) { + return (int) Math.round(docs * 100.0d / total); } return 100; } diff --git a/container-core/src/main/java/com/yahoo/container/logging/HitCounts.java b/container-core/src/main/java/com/yahoo/container/logging/HitCounts.java index c76382de584..b9f14be3ea6 100644 --- a/container-core/src/main/java/com/yahoo/container/logging/HitCounts.java +++ b/container-core/src/main/java/com/yahoo/container/logging/HitCounts.java @@ -18,11 +18,6 @@ public class HitCounts { private final int requestedOffset; private final Coverage coverage; - HitCounts(int retrievedHits, int summaryCount, long totalHitCount, int requestedHits, int requestedOffset) { - this(retrievedHits, summaryCount, totalHitCount, requestedHits, requestedOffset, - new Coverage(1,1,1,0)); - } - public HitCounts(int retrievedHits, int summaryCount, long totalHitCount, int requestedHits, int requestedOffset, Coverage coverage) { |