diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2020-09-30 10:43:13 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2020-09-30 10:43:13 +0200 |
commit | 5f41e744749e4808c10526cf2f45ba69a1f32e32 (patch) | |
tree | 29053d8c65f374f09a66b5fe662f7e313da9d0ee /vespalib | |
parent | a91a258c696a401405a84b79ebc427f287976222 (diff) |
Consider a buffer on hold to have zero dead elements.
Diffstat (limited to 'vespalib')
-rw-r--r-- | vespalib/src/tests/datastore/datastore/datastore_test.cpp | 7 | ||||
-rw-r--r-- | vespalib/src/vespa/vespalib/datastore/bufferstate.cpp | 3 |
2 files changed, 6 insertions, 4 deletions
diff --git a/vespalib/src/tests/datastore/datastore/datastore_test.cpp b/vespalib/src/tests/datastore/datastore/datastore_test.cpp index 448df2d24bd..a5bb51e5074 100644 --- a/vespalib/src/tests/datastore/datastore/datastore_test.cpp +++ b/vespalib/src/tests/datastore/datastore/datastore_test.cpp @@ -422,7 +422,8 @@ TEST(DataStoreTest, require_that_memory_stats_are_calculated) s.holdBuffer(r.bufferId()); s.transferHoldLists(100); m._usedElems += 2; - m._holdElems += 2; // used - dead + m._holdElems = m._usedElems; + m._deadElems = 0; m._activeBuffers--; m._holdBuffers++; assertMemStats(m, s.getMemStats()); @@ -474,8 +475,8 @@ TEST(DataStoreTest, require_that_memory_usage_is_calculated) vespalib::MemoryUsage m = s.getMemoryUsage(); EXPECT_EQ(MyRef::offsetSize() * sizeof(int), m.allocatedBytes()); EXPECT_EQ(5 * sizeof(int), m.usedBytes()); - EXPECT_EQ(2 * sizeof(int), m.deadBytes()); - EXPECT_EQ(3 * sizeof(int), m.allocatedBytesOnHold()); + EXPECT_EQ(0 * sizeof(int), m.deadBytes()); + EXPECT_EQ(5 * sizeof(int), m.allocatedBytesOnHold()); s.trimHoldLists(101); } diff --git a/vespalib/src/vespa/vespalib/datastore/bufferstate.cpp b/vespalib/src/vespa/vespalib/datastore/bufferstate.cpp index acebe8d0db6..eb301556c4b 100644 --- a/vespalib/src/vespa/vespalib/datastore/bufferstate.cpp +++ b/vespalib/src/vespa/vespalib/datastore/bufferstate.cpp @@ -137,7 +137,8 @@ BufferState::onHold() _compacting = false; assert(_deadElems <= _usedElems); assert(_holdElems <= (_usedElems - _deadElems)); - _holdElems = _usedElems - _deadElems; // Put everyting not dead on hold + _deadElems = 0; + _holdElems = _usedElems; // Put everyting on hold _typeHandler->onHold(&_usedElems); if (!_freeList.empty()) { removeFromFreeListList(); |