diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2016-11-25 02:38:55 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-01-25 18:55:20 +0100 |
commit | e215f5577b3b58ea78670f2ec5e4d259cb825082 (patch) | |
tree | 3037eff5fb340f63ef4018295895ac369e45b142 /container-search/src | |
parent | dd98862b1e13654bb4005b88c2d748e5fc47b3c7 (diff) |
Render timeout information all the way.
Diffstat (limited to 'container-search/src')
7 files changed, 77 insertions, 6 deletions
diff --git a/container-search/src/main/java/com/yahoo/fs4/QueryResultPacket.java b/container-search/src/main/java/com/yahoo/fs4/QueryResultPacket.java index 0b940791326..2714ea7ee76 100644 --- a/container-search/src/main/java/com/yahoo/fs4/QueryResultPacket.java +++ b/container-search/src/main/java/com/yahoo/fs4/QueryResultPacket.java @@ -31,8 +31,11 @@ public class QueryResultPacket extends Packet { /** Whether coverage information is included in this result */ private boolean coverageFeature = false; + private boolean coverageExtendedFeature = false; private long coverageDocs = 0; private long activeDocs = 0; + private long soonActiveDocs = 0; + private int degradedReason = 0; /** Whether the result contains grouping results **/ private boolean groupDataFeature = false; @@ -81,6 +84,10 @@ public class QueryResultPacket extends Packet { public long getActiveDocs() { return activeDocs; } + public long getSoonActiveDocs() { return soonActiveDocs; } + + public int getDegradedReason() { return degradedReason; } + public boolean getCoverageFull() { return coverageDocs == activeDocs; } @@ -117,6 +124,13 @@ public class QueryResultPacket extends Packet { coverageDocs = buffer.getLong(); activeDocs = buffer.getLong(); } + if (coverageExtendedFeature) { + soonActiveDocs = buffer.getLong(); + degradedReason = buffer.getInt(); + } else { + soonActiveDocs = activeDocs; + degradedReason = 0; + } decodeDocuments(buffer,documentCount); if (propsFeature) { int numMaps = buffer.getInt(); @@ -135,11 +149,12 @@ public class QueryResultPacket extends Packet { /** * feature bits */ - public static final int QRF_MLD = 0x00000001; - public static final int QRF_SORTDATA = 0x00000010; - public static final int QRF_COVERAGE = 0x00000040; - public static final int QRF_GROUPDATA = 0x00000200; - public static final int QRF_PROPERTIES = 0x00000400; + public static final int QRF_MLD = 0x00000001; + public static final int QRF_SORTDATA = 0x00000010; + public static final int QRF_EXTENDED_COVERAGE = 0x00000020; + public static final int QRF_COVERAGE = 0x00000040; + public static final int QRF_GROUPDATA = 0x00000200; + public static final int QRF_PROPERTIES = 0x00000400; /** * Sets the features of this package. @@ -154,6 +169,7 @@ public class QueryResultPacket extends Packet { datasetFeature = (0x002 & features) != 0; // Data given by sortFeature not currently used by QRS: // sortFeature = (QRF_SORTDATA & features) != 0; + coverageExtendedFeature = (QRF_EXTENDED_COVERAGE & features) != 0; coverageFeature = (QRF_COVERAGE & features) != 0; groupDataFeature = (QRF_GROUPDATA & features) != 0; propsFeature = (QRF_PROPERTIES & features) != 0; 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 aec60473541..872ed5ac11c 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 @@ -417,7 +417,7 @@ 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()).setSoonActive(resultPacket.getSoonActiveDocs()).setDegradedReason(resultPacket.getDegradedReason())); } } diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/DefaultTemplateSet.java b/container-search/src/main/java/com/yahoo/prelude/templates/DefaultTemplateSet.java index e88e58b8681..3158b330146 100644 --- a/container-search/src/main/java/com/yahoo/prelude/templates/DefaultTemplateSet.java +++ b/container-search/src/main/java/com/yahoo/prelude/templates/DefaultTemplateSet.java @@ -45,6 +45,11 @@ public class DefaultTemplateSet extends UserTemplate<XMLWriter> { private static final Utf8String NAME = new Utf8String("name"); private static final Utf8String CODE = new Utf8String("code"); private static final Utf8String COVERAGE_DOCS = new Utf8String("coverage-docs"); + private static final Utf8String COVERAGE_ACTIVE = new Utf8String("coverage-active"); + private static final Utf8String COVERAGE_SOON_ACTIVE = new Utf8String("coverage-soon-active"); + private static final Utf8String COVERAGE_DEGRADE_MATCHPHASE = new Utf8String("coverage-degrade-match-phase"); + private static final Utf8String COVERAGE_DEGRADE_TIMEOUT = new Utf8String("coverage-degrade-timeout"); + private static final Utf8String COVERAGE_DEGRADE_ADAPTIVE_TIMEOUT = new Utf8String("coverage-degrade-adaptive-timeout"); private static final Utf8String COVERAGE_NODES = new Utf8String("coverage-nodes"); private static final Utf8String COVERAGE_FULL = new Utf8String("coverage-full"); private static final Utf8String COVERAGE = new Utf8String("coverage"); @@ -161,6 +166,13 @@ public class DefaultTemplateSet extends UserTemplate<XMLWriter> { protected static void renderCoverageAttributes(Coverage coverage, XMLWriter writer) throws IOException { if (coverage == null) return; writer.attribute(COVERAGE_DOCS,coverage.getDocs()); + writer.attribute(COVERAGE_ACTIVE,coverage.getActive()); + writer.attribute(COVERAGE_SOON_ACTIVE,coverage.getSoonActive()); + if (coverage.isDegraded()) { + writer.attribute(COVERAGE_DEGRADE_MATCHPHASE, coverage.isDegradedByMatchPhase()); + writer.attribute(COVERAGE_DEGRADE_TIMEOUT, coverage.isDegradedByTimeout()); + writer.attribute(COVERAGE_DEGRADE_ADAPTIVE_TIMEOUT, coverage.isDegradedByAdapativeTimeout()); + } writer.attribute(COVERAGE_NODES,coverage.getNodes()); writer.attribute(COVERAGE_FULL,coverage.getFull()); writer.attribute(COVERAGE,coverage.getResultPercentage()); diff --git a/container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java index a742a54e866..e35f21b1797 100644 --- a/container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java +++ b/container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java @@ -60,6 +60,11 @@ public final class DefaultRenderer extends AsynchronousSectionedRenderer<Result> private static final Utf8String NAME = new Utf8String("name"); private static final Utf8String CODE = new Utf8String("code"); private static final Utf8String COVERAGE_DOCS = new Utf8String("coverage-docs"); + private static final Utf8String COVERAGE_ACTIVE = new Utf8String("coverage-active"); + private static final Utf8String COVERAGE_SOON_ACTIVE = new Utf8String("coverage-soon-active"); + private static final Utf8String COVERAGE_DEGRADE_MATCHPHASE = new Utf8String("coverage-degrade-match-phase"); + private static final Utf8String COVERAGE_DEGRADE_TIMEOUT = new Utf8String("coverage-degrade-timeout"); + private static final Utf8String COVERAGE_DEGRADE_ADAPTIVE_TIMEOUT = new Utf8String("coverage-degrade-adaptive-timeout"); private static final Utf8String COVERAGE_NODES = new Utf8String("coverage-nodes"); private static final Utf8String COVERAGE_FULL = new Utf8String("coverage-full"); private static final Utf8String COVERAGE = new Utf8String("coverage"); @@ -152,6 +157,13 @@ public final class DefaultRenderer extends AsynchronousSectionedRenderer<Result> protected static void renderCoverageAttributes(Coverage coverage, XMLWriter writer) throws IOException { if (coverage == null) return; writer.attribute(COVERAGE_DOCS,coverage.getDocs()); + writer.attribute(COVERAGE_ACTIVE,coverage.getActive()); + writer.attribute(COVERAGE_SOON_ACTIVE,coverage.getSoonActive()); + if (coverage.isDegraded()) { + writer.attribute(COVERAGE_DEGRADE_MATCHPHASE, coverage.isDegradedByMatchPhase()); + writer.attribute(COVERAGE_DEGRADE_TIMEOUT, coverage.isDegradedByTimeout()); + writer.attribute(COVERAGE_DEGRADE_ADAPTIVE_TIMEOUT, coverage.isDegradedByAdapativeTimeout()); + } writer.attribute(COVERAGE_NODES,coverage.getNodes()); writer.attribute(COVERAGE_FULL,coverage.getFull()); writer.attribute(COVERAGE,coverage.getResultPercentage()); diff --git a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java index 31b231a0997..b9ab8f79329 100644 --- a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java +++ b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java @@ -96,6 +96,12 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> { private static final String COVERAGE = "coverage"; private static final String COVERAGE_COVERAGE = "coverage"; private static final String COVERAGE_DOCUMENTS = "documents"; + private static final String COVERAGE_ACTIVE = "active"; + private static final String COVERAGE_SOON_ACTIVE = "soon-active"; + private static final String COVERAGE_DEGRADE = "degraded"; + private static final String COVERAGE_DEGRADE_MATCHPHASE = "match-phase"; + private static final String COVERAGE_DEGRADE_TIMEOUT = "timeout"; + private static final String COVERAGE_DEGRADE_ADAPTIVE_TIMEOUT = "adaptive-timeout"; private static final String COVERAGE_FULL = "full"; private static final String COVERAGE_NODES = "nodes"; private static final String COVERAGE_RESULTS = "results"; @@ -439,6 +445,16 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> { generator.writeObjectFieldStart(COVERAGE); generator.writeNumberField(COVERAGE_COVERAGE, c.getResultPercentage()); generator.writeNumberField(COVERAGE_DOCUMENTS, c.getDocs()); + generator.writeNumberField(COVERAGE_ACTIVE, c.getActive()); + generator.writeNumberField(COVERAGE_SOON_ACTIVE, c.getSoonActive()); + if (c.isDegraded()) { + generator.writeObjectFieldStart(COVERAGE_DEGRADE); + generator.writeBooleanField(COVERAGE_DEGRADE_MATCHPHASE, c.isDegradedByMatchPhase()); + generator.writeBooleanField(COVERAGE_DEGRADE_TIMEOUT, c.isDegradedByTimeout()); + generator.writeBooleanField(COVERAGE_DEGRADE_ADAPTIVE_TIMEOUT, c.isDegradedByAdapativeTimeout()); + generator.writeEndObject(); + } + generator.writeNumberField(COVERAGE_DOCUMENTS, c.getDocs()); generator.writeBooleanField(COVERAGE_FULL, c.getFull()); generator.writeNumberField(COVERAGE_NODES, c.getNodes()); generator.writeNumberField(COVERAGE_RESULTS, c.getResultSets()); diff --git a/container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java index e394a674a06..5a0695c0491 100644 --- a/container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java +++ b/container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java @@ -54,6 +54,11 @@ public final class SyncDefaultRenderer extends Renderer { private static final Utf8String NAME = new Utf8String("name"); private static final Utf8String CODE = new Utf8String("code"); private static final Utf8String COVERAGE_DOCS = new Utf8String("coverage-docs"); + private static final Utf8String COVERAGE_ACTIVE = new Utf8String("coverage-active"); + private static final Utf8String COVERAGE_SOON_ACTIVE = new Utf8String("coverage-soon-active"); + private static final Utf8String COVERAGE_DEGRADE_MATCHPHASE = new Utf8String("coverage-degrade-match-phase"); + private static final Utf8String COVERAGE_DEGRADE_TIMEOUT = new Utf8String("coverage-degrade-timeout"); + private static final Utf8String COVERAGE_DEGRADE_ADAPTIVE_TIMEOUT = new Utf8String("coverage-degrade-adaptive-timeout"); private static final Utf8String COVERAGE_NODES = new Utf8String("coverage-nodes"); private static final Utf8String COVERAGE_FULL = new Utf8String("coverage-full"); private static final Utf8String COVERAGE = new Utf8String("coverage"); @@ -166,6 +171,13 @@ public final class SyncDefaultRenderer extends Renderer { protected static void renderCoverageAttributes(Coverage coverage, XMLWriter writer) throws IOException { if (coverage == null) return; writer.attribute(COVERAGE_DOCS,coverage.getDocs()); + writer.attribute(COVERAGE_ACTIVE,coverage.getActive()); + writer.attribute(COVERAGE_SOON_ACTIVE,coverage.getSoonActive()); + if (coverage.isDegraded()) { + writer.attribute(COVERAGE_DEGRADE_MATCHPHASE, coverage.isDegradedByMatchPhase()); + writer.attribute(COVERAGE_DEGRADE_TIMEOUT, coverage.isDegradedByTimeout()); + writer.attribute(COVERAGE_DEGRADE_ADAPTIVE_TIMEOUT, coverage.isDegradedByAdapativeTimeout()); + } writer.attribute(COVERAGE_NODES,coverage.getNodes()); writer.attribute(COVERAGE_FULL,coverage.getFull()); writer.attribute(COVERAGE,coverage.getResultPercentage()); 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 bf34c42b97a..13deaf36db7 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 @@ -21,4 +21,7 @@ public class Coverage extends com.yahoo.container.handler.Coverage { super(docs, nodes, full, resultSets); } + public Coverage setSoonActive(long soonActive) { this.soonActive = soonActive; return this; } + public Coverage setDegradedReason(int degradedReason) { this.degradedReason = degradedReason; return this; } + } |