aboutsummaryrefslogtreecommitdiff
path: root/src/zenstore/gc.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2024-09-30 09:59:34 +0200
committerGitHub Enterprise <[email protected]>2024-09-30 09:59:34 +0200
commitebec68d49b2c968ecf684973b33f9f3d1d56b702 (patch)
tree39de29b8d6b24d071d38254e40b5ee850b7c1299 /src/zenstore/gc.cpp
parentoptimize startup time (#175) (diff)
downloadzen-ebec68d49b2c968ecf684973b33f9f3d1d56b702.tar.xz
zen-ebec68d49b2c968ecf684973b33f9f3d1d56b702.zip
gc command attachment options (#176)
* zen command - add options to control meta data cache when triggering gc
Diffstat (limited to 'src/zenstore/gc.cpp')
-rw-r--r--src/zenstore/gc.cpp37
1 files changed, 30 insertions, 7 deletions
diff --git a/src/zenstore/gc.cpp b/src/zenstore/gc.cpp
index cde89421e..159b13af0 100644
--- a/src/zenstore/gc.cpp
+++ b/src/zenstore/gc.cpp
@@ -1705,6 +1705,8 @@ GcScheduler::AppendGCLog(std::string_view Id, GcClock::TimePoint StartTime, cons
Writer << "CompactBlockUsageThresholdPercent"sv << Settings.CompactBlockUsageThresholdPercent;
Writer << "AttachmentRangeMin"sv << Settings.AttachmentRangeMin;
Writer << "AttachmentRangeMax"sv << Settings.AttachmentRangeMin;
+ Writer << "ForceStoreCacheAttachmentMetaData"sv << Settings.StoreCacheAttachmentMetaData;
+ Writer << "ForceStoreProjectAttachmentMetaData"sv << Settings.StoreProjectAttachmentMetaData;
}
Writer.EndObject();
@@ -1901,7 +1903,10 @@ GcScheduler::SchedulerThread()
bool SingleThreaded = m_Config.SingleThreaded;
IoHash AttachmentRangeMin = IoHash::Zero;
IoHash AttachmentRangeMax = IoHash::Max;
- uint8_t NextAttachmentPassIndex =
+ bool StoreCacheAttachmentMetaData = m_Config.StoreCacheAttachmentMetaData;
+ bool StoreProjectAttachmentMetaData = m_Config.StoreProjectAttachmentMetaData;
+
+ uint8_t NextAttachmentPassIndex =
ComputeAttachmentRange(m_AttachmentPassIndex, m_Config.AttachmentPassCount, AttachmentRangeMin, AttachmentRangeMax);
bool DiskSpaceGCTriggered = false;
@@ -1947,6 +1952,14 @@ GcScheduler::SchedulerThread()
{
NextAttachmentPassIndex = m_AttachmentPassIndex;
}
+ if (TriggerParams.StoreCacheAttachmentMetaData.has_value())
+ {
+ StoreCacheAttachmentMetaData = TriggerParams.StoreCacheAttachmentMetaData.value();
+ }
+ if (TriggerParams.StoreProjectAttachmentMetaData.has_value())
+ {
+ StoreProjectAttachmentMetaData = TriggerParams.StoreProjectAttachmentMetaData.value();
+ }
DoGc = true;
}
@@ -2173,6 +2186,8 @@ GcScheduler::SchedulerThread()
SingleThreaded,
AttachmentRangeMin,
AttachmentRangeMax,
+ StoreCacheAttachmentMetaData,
+ StoreProjectAttachmentMetaData,
SilenceErrors);
if (!GcSuccess)
{
@@ -2274,6 +2289,8 @@ GcScheduler::CollectGarbage(const GcClock::TimePoint& CacheExpireTime,
bool SingleThreaded,
const IoHash& AttachmentRangeMin,
const IoHash& AttachmentRangeMax,
+ bool StoreCacheAttachmentMetaData,
+ bool StoreProjectAttachmentMetaData,
bool SilenceErrors)
{
ZEN_TRACE_CPU("GcScheduler::CollectGarbage");
@@ -2357,18 +2374,24 @@ GcScheduler::CollectGarbage(const GcClock::TimePoint& CacheExpireTime,
.CompactBlockUsageThresholdPercent = CompactBlockUsageThresholdPercent,
.DiskReservePath = m_Config.RootDirectory / "reserve.gc",
.AttachmentRangeMin = AttachmentRangeMin,
- .AttachmentRangeMax = AttachmentRangeMax};
+ .AttachmentRangeMax = AttachmentRangeMax,
+ .StoreCacheAttachmentMetaData = StoreCacheAttachmentMetaData,
+ .StoreProjectAttachmentMetaData = StoreProjectAttachmentMetaData};
auto AppendSettings = [](StringBuilderBase& SB, const GcSettings& Settings) {
SB.Append(
fmt::format(" GC small objects: {}\n", Settings.CollectSmallObjects ? "yes"sv : "no"sv));
SB.Append(fmt::format(" GC Cid store: {}\n", Settings.SkipCidDelete ? "no"sv : "yes"sv));
- if (!Settings.SkipCidDelete &&
- (Settings.AttachmentRangeMin != IoHash::Zero || Settings.AttachmentRangeMax != IoHash::Max))
+ if (!Settings.SkipCidDelete)
{
- SB.Append(fmt::format(" Attachment range: {}-{}\n",
- Settings.AttachmentRangeMin,
- Settings.AttachmentRangeMax));
+ if (Settings.AttachmentRangeMin != IoHash::Zero || Settings.AttachmentRangeMax != IoHash::Max)
+ {
+ SB.Append(fmt::format(" Attachment range: {}-{}\n",
+ Settings.AttachmentRangeMin,
+ Settings.AttachmentRangeMax));
+ }
+ SB.Append(fmt::format(" Cache attachment meta: {}\n", Settings.StoreCacheAttachmentMetaData));
+ SB.Append(fmt::format(" Porject attachment meta: {}\n", Settings.StoreProjectAttachmentMetaData));
}
SB.Append(fmt::format(" Cache cutoff time: {}\n", Settings.CacheExpireTime));
SB.Append(fmt::format(" Project store cutoff time: {}", Settings.ProjectStoreExpireTime));