aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-02-01 23:29:34 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2018-02-01 23:29:34 +0100
commit0e50a4cb9c597cb97170d49b521d0d5ee4e38ec2 (patch)
treeb257d75d5c554b0ec0251389b80893e7cf5ffa21 /container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java
parent73555da8073d121ca367b51a1fd38193a47982f3 (diff)
Propagate timeout errors up in fill phase.
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java
index b02701f5c8b..e13eb6011b4 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java
@@ -2,6 +2,7 @@
package com.yahoo.prelude.fastsearch;
import com.yahoo.slime.BinaryFormat;
+import com.yahoo.data.access.Inspector;
import com.yahoo.slime.Slime;
import com.yahoo.data.access.slime.SlimeAdapter;
import com.yahoo.prelude.ConfigurationException;
@@ -13,6 +14,8 @@ import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
+import static com.yahoo.data.access.Type.OBJECT;
+
/**
* A set of docsum definitions
*
@@ -57,7 +60,7 @@ public final class DocsumDefinitionSet {
* @param hit the Hit corresponding to this document summary
* @throws ConfigurationException if the summary class of this hit is missing
*/
- public final void lazyDecode(String summaryClass, byte[] data, FastHit hit) {
+ public final String lazyDecode(String summaryClass, byte[] data, FastHit hit) {
ByteBuffer buffer = ByteBuffer.wrap(data);
buffer.order(ByteOrder.LITTLE_ENDIAN);
long docsumClassId = buffer.getInt();
@@ -66,7 +69,12 @@ public final class DocsumDefinitionSet {
}
DocsumDefinition docsumDefinition = lookupDocsum(summaryClass);
Slime value = BinaryFormat.decode(buffer.array(), buffer.arrayOffset()+buffer.position(), buffer.remaining());
- hit.addSummary(docsumDefinition, new SlimeAdapter(value.get()));
+ Inspector docsum = new SlimeAdapter(value.get());
+ if (docsum.type() != OBJECT) {
+ return "Hit " + hit + " failed: " + docsum.asString();
+ }
+ hit.addSummary(docsumDefinition, docsum);
+ return null;
}
private DocsumDefinition lookupDocsum(String summaryClass) {