summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2021-08-16 10:18:05 +0200
committerTor Egge <Tor.Egge@online.no>2021-08-16 10:18:05 +0200
commit7d4fb319737a4b27c4b37ab775109f579df91a1e (patch)
tree87207aa06a3b88d7e31cf2d57010d8a91ee10547 /vespalib
parent18f047e27d5df8a8fc3cfb4b759d4495e2859860 (diff)
Assert that compacting flag has been set on buffers when finishing compacting.
Bypass buffer resize if it is already large enough.
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/vespa/vespalib/datastore/datastorebase.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/vespalib/src/vespa/vespalib/datastore/datastorebase.cpp b/vespalib/src/vespa/vespalib/datastore/datastorebase.cpp
index 008ab0f0af9..85411c833b5 100644
--- a/vespalib/src/vespa/vespalib/datastore/datastorebase.cpp
+++ b/vespalib/src/vespa/vespalib/datastore/datastorebase.cpp
@@ -171,7 +171,10 @@ DataStoreBase::switch_or_grow_primary_buffer(uint32_t typeId, size_t elemsNeeded
uint32_t bufferId = _primary_buffer_ids[typeId];
if (elemsNeeded + _states[bufferId].size() >= numEntriesForNewBuffer) {
if (consider_grow_active_buffer(typeId, elemsNeeded)) {
- fallbackResize(_primary_buffer_ids[typeId], elemsNeeded);
+ bufferId = _primary_buffer_ids[typeId];
+ if (elemsNeeded > _states[bufferId].remaining()) {
+ fallbackResize(bufferId, elemsNeeded);
+ }
} else {
switch_primary_buffer(typeId, elemsNeeded);
}
@@ -442,6 +445,7 @@ void
DataStoreBase::finishCompact(const std::vector<uint32_t> &toHold)
{
for (uint32_t bufferId : toHold) {
+ assert(_states[bufferId].getCompacting());
holdBuffer(bufferId);
}
}