summaryrefslogtreecommitdiffstats
path: root/document
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2021-03-24 14:56:45 +0000
committerHåvard Pettersen <havardpe@oath.com>2021-03-24 15:01:34 +0000
commit83605debe0a6b3a53b339f24992c9a54511d2a28 (patch)
treedcd73fa28405aba498d48cd01d15e5da1a903570 /document
parent08f5c940cd3160b07ea48ec1e814c7641597e078 (diff)
handle value decoding failures more gracefully
Diffstat (limited to 'document')
-rw-r--r--document/src/vespa/document/serialization/vespadocumentdeserializer.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/document/src/vespa/document/serialization/vespadocumentdeserializer.cpp b/document/src/vespa/document/serialization/vespadocumentdeserializer.cpp
index 6567b8cb6b5..d88f7437112 100644
--- a/document/src/vespa/document/serialization/vespadocumentdeserializer.cpp
+++ b/document/src/vespa/document/serialization/vespadocumentdeserializer.cpp
@@ -373,7 +373,11 @@ VespaDocumentDeserializer::readTensor()
std::unique_ptr<vespalib::eval::Value> tensor;
if (length != 0) {
nbostream wrapStream(_stream.peek(), length);
- tensor = vespalib::eval::decode_value(wrapStream, FastValueBuilderFactory::get());
+ try {
+ tensor = vespalib::eval::decode_value(wrapStream, FastValueBuilderFactory::get());
+ } catch (const vespalib::eval::DecodeValueException &e) {
+ throw DeserializeException("tensor value decode failed", e, VESPA_STRLOC);
+ }
if (wrapStream.size() != 0) {
throw DeserializeException("Leftover bytes deserializing tensor field value.", VESPA_STRLOC);
}