summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2016-11-25 02:38:55 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-01-25 18:55:20 +0100
commite215f5577b3b58ea78670f2ec5e4d259cb825082 (patch)
tree3037eff5fb340f63ef4018295895ac369e45b142 /container-search
parentdd98862b1e13654bb4005b88c2d748e5fc47b3c7 (diff)
Render timeout information all the way.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/fs4/QueryResultPacket.java26
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/templates/DefaultTemplateSet.java12
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java12
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java12
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/Coverage.java3
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; }
+
}