summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2020-09-30 10:43:13 +0200
committerTor Egge <Tor.Egge@broadpark.no>2020-09-30 10:43:13 +0200
commit5f41e744749e4808c10526cf2f45ba69a1f32e32 (patch)
tree29053d8c65f374f09a66b5fe662f7e313da9d0ee /vespalib
parenta91a258c696a401405a84b79ebc427f287976222 (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.cpp7
-rw-r--r--vespalib/src/vespa/vespalib/datastore/bufferstate.cpp3
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();