aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2021-12-09 15:36:12 +0100
committerTor Egge <Tor.Egge@online.no>2021-12-09 17:22:09 +0100
commit66a12314e0350f877a6335cc5338210db6a00d34 (patch)
tree45cd7a410ac590326232dc736adf772d2f1c3e7b /searchcore
parent828ebd77e0a57c1da583f43f1f2bc0512ab698e9 (diff)
Calculate need for compaction when updating stats.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp11
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.h2
2 files changed, 7 insertions, 6 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp
index 641108ea46b..28234730f7b 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp
@@ -197,8 +197,7 @@ DocumentMetaStore::consider_compact_gid_to_lid_map()
if (_gidToLidMap.getAllocator().getNodeStore().has_held_buffers()) {
return false;
}
- auto &compaction_strategy = getConfig().getCompactionStrategy();
- return compaction_strategy.should_compact_memory(_cached_gid_to_lid_map_memory_usage);
+ return _should_compact_gid_to_lid_map;
}
void
@@ -221,13 +220,15 @@ DocumentMetaStore::onCommit()
void
DocumentMetaStore::onUpdateStat()
{
+ auto &compaction_strategy = getConfig().getCompactionStrategy();
vespalib::MemoryUsage usage = _metaDataStore.getMemoryUsage();
usage.incAllocatedBytesOnHold(getGenerationHolder().getHeldBytes());
size_t bvSize = _lidAlloc.getUsedLidsSize();
usage.incAllocatedBytes(bvSize);
usage.incUsedBytes(bvSize);
- _cached_gid_to_lid_map_memory_usage = _gidToLidMap.getMemoryUsage();
- usage.merge(_cached_gid_to_lid_map_memory_usage);
+ auto gid_to_lid_map_memory_usage = _gidToLidMap.getMemoryUsage();
+ _should_compact_gid_to_lid_map = compaction_strategy.should_compact_memory(gid_to_lid_map_memory_usage);
+ usage.merge(gid_to_lid_map_memory_usage);
// the free lists are not taken into account here
updateStatistics(_metaDataStore.size(),
_metaDataStore.size(),
@@ -422,7 +423,7 @@ DocumentMetaStore::DocumentMetaStore(BucketDBOwnerSP bucketDB,
_trackDocumentSizes(true),
_changesSinceCommit(0),
_op_listener(),
- _cached_gid_to_lid_map_memory_usage()
+ _should_compact_gid_to_lid_map(false)
{
ensureSpace(0); // lid 0 is reserved
setCommittedDocIdLimit(1u); // lid 0 is reserved
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.h
index d78e98713ff..9e4977c65e1 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.h
@@ -77,7 +77,7 @@ private:
bool _trackDocumentSizes;
size_t _changesSinceCommit;
OperationListenerSP _op_listener;
- vespalib::MemoryUsage _cached_gid_to_lid_map_memory_usage;
+ bool _should_compact_gid_to_lid_map;
DocId getFreeLid();
DocId peekFreeLid();