aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2023-02-01 16:12:37 +0100
committerTor Egge <Tor.Egge@online.no>2023-02-01 16:12:37 +0100
commit743234433a8fdaffe5d655c11ef258d6e1a40438 (patch)
treec3d96baafd485375428177ab3f4d18782bd8bb4d /searchlib
parent40eb5657068c2b1643b9bcf82476ad6ebe7b000d (diff)
Throw new overflow exception with field name info in field inverter
whenever an overflow exception is caught.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp17
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/field_inverter.h2
2 files changed, 18 insertions, 1 deletions
diff --git a/searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp b/searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp
index a05b39a74a9..25aff06b5ef 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp
@@ -18,7 +18,9 @@
#include <vespa/searchlib/util/url.h>
#include <vespa/vespalib/datastore/aligner.h>
#include <vespa/vespalib/text/utf8.h>
+#include <vespa/vespalib/util/exceptions.h>
#include <vespa/vespalib/util/stringfmt.h>
+#include <vespa/vespalib/stllike/asciistream.h>
#include <vespa/vespalib/stllike/hash_map.hpp>
#include <stdexcept>
@@ -519,7 +521,7 @@ FieldInverter::applyRemoves()
}
void
-FieldInverter::pushDocuments()
+FieldInverter::push_documents_internal()
{
trimAbortedDocs();
@@ -605,5 +607,18 @@ FieldInverter::pushDocuments()
reset();
}
+void
+FieldInverter::pushDocuments()
+{
+ try {
+ push_documents_internal();
+ } catch (vespalib::OverflowException &e) {
+ const Schema::IndexField &field = _schema.getIndexField(_fieldId);
+ vespalib::asciistream s;
+ s << "FieldInverter::pushDocuments(), caught exception for field " << field.getName();
+ throw vespalib::OverflowException(s.c_str(), e);
+ }
+}
+
}
diff --git a/searchlib/src/vespa/searchlib/memoryindex/field_inverter.h b/searchlib/src/vespa/searchlib/memoryindex/field_inverter.h
index 7995dc56de8..1a582bf8099 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/field_inverter.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/field_inverter.h
@@ -248,6 +248,8 @@ public:
VESPA_DLL_LOCAL void
processAnnotations(const document::StringFieldValue &value);
+ void push_documents_internal();
+
private:
void processNormalDocTextField(const document::StringFieldValue &field);
void processNormalDocArrayTextField(const document::ArrayFieldValue &field);