aboutsummaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2023-02-01 15:08:51 +0100
committerTor Egge <Tor.Egge@online.no>2023-02-01 15:08:51 +0100
commit40eb5657068c2b1643b9bcf82476ad6ebe7b000d (patch)
treee13235972cbb9353f30e176090a2c27c06a54ccd /vespalib
parent179daa38c12471ec9de4e48ec91865c8a336d8a8 (diff)
Throw exception when data store buffer max size is too small.
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/vespa/vespalib/datastore/buffer_type.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/vespalib/src/vespa/vespalib/datastore/buffer_type.cpp b/vespalib/src/vespa/vespalib/datastore/buffer_type.cpp
index d1b16e7ae7a..4a9ba2d33a8 100644
--- a/vespalib/src/vespa/vespalib/datastore/buffer_type.cpp
+++ b/vespalib/src/vespa/vespalib/datastore/buffer_type.cpp
@@ -1,6 +1,8 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "buffer_type.hpp"
+#include <vespa/vespalib/stllike/asciistream.h>
+#include <vespa/vespalib/util/exceptions.h>
#include <algorithm>
#include <cassert>
#include <cmath>
@@ -150,7 +152,24 @@ BufferTypeBase::calcArraysToAlloc(uint32_t bufferId, ElemCount elemsNeeded, bool
if (result > _maxArrays) {
result = _maxArrays;
}
- assert(result >= neededArrays);
+ if (result < neededArrays) {
+ vespalib::asciistream s;
+ s << "BufferTypeBase::calcArraysToAlloc(" <<
+ "bufferId=" << bufferId <<
+ ",elemsNeeeded=" << elemsNeeded <<
+ ",resizing=" << (resizing ? "true" : "false") << ")" <<
+ " wantedArrays=" << wantedArrays <<
+ ", _arraySize=" << _arraySize <<
+ ", _maxArrays=" << _maxArrays <<
+ ", reservedElems=" << reservedElems <<
+ ", liveArrays=" << liveArrays <<
+ ", growArrays=" << growArrays <<
+ ", usedArrays=" << usedArrays <<
+ ", typeid(*this).name=\"" << typeid(*this).name() << "\"" <<
+ ", newArrays=" << result <<
+ " < neededArrays=" << neededArrays;;
+ throw vespalib::OverflowException(s.c_str());
+ }
return result;
}