diff options
author | Tor Egge <Tor.Egge@online.no> | 2021-08-16 10:18:05 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2021-08-16 10:18:05 +0200 |
commit | 7d4fb319737a4b27c4b37ab775109f579df91a1e (patch) | |
tree | 87207aa06a3b88d7e31cf2d57010d8a91ee10547 /vespalib | |
parent | 18f047e27d5df8a8fc3cfb4b759d4495e2859860 (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.cpp | 6 |
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); } } |