diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2018-02-01 23:29:34 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2018-02-01 23:29:34 +0100 |
commit | 0e50a4cb9c597cb97170d49b521d0d5ee4e38ec2 (patch) | |
tree | b257d75d5c554b0ec0251389b80893e7cf5ffa21 /container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java | |
parent | 73555da8073d121ca367b51a1fd38193a47982f3 (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.java | 12 |
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) { |