aboutsummaryrefslogtreecommitdiff
path: root/src/zenstore/gc.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2023-12-11 11:48:23 +0100
committerGitHub <[email protected]>2023-12-11 11:48:23 +0100
commit37920b41048acffa30cf156d7d36bfc17ba15c0e (patch)
tree15c4f652a54470e359a9b9dcd194e89cb10eaaf9 /src/zenstore/gc.cpp
parentmulti-line logging improvements (#597) (diff)
downloadzen-37920b41048acffa30cf156d7d36bfc17ba15c0e.tar.xz
zen-37920b41048acffa30cf156d7d36bfc17ba15c0e.zip
improved scrubbing of oplogs and filecas (#596)
- Improvement: Scrub command now validates compressed buffer hashes in filecas storage (used for large chunks) - Improvement: Added --dry, --no-gc and --no-cas options to zen scrub command - Improvement: Implemented oplog scrubbing (previously was a no-op) - Improvement: Implemented support for running scrubbint at startup with --scrub=<options>
Diffstat (limited to 'src/zenstore/gc.cpp')
-rw-r--r--src/zenstore/gc.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/zenstore/gc.cpp b/src/zenstore/gc.cpp
index 2660c2643..de653b0e3 100644
--- a/src/zenstore/gc.cpp
+++ b/src/zenstore/gc.cpp
@@ -1712,12 +1712,18 @@ GcScheduler::SchedulerThread()
DoGc = false;
}
+ if (m_TriggerScrubParams->SkipCas)
+ {
+ SkipCid = true;
+ }
+
+ DoDelete = !m_TriggerScrubParams->SkipDelete;
ScrubTimeslice = m_TriggerScrubParams->MaxTimeslice;
}
if (DoScrubbing)
{
- ScrubStorage(DoDelete, ScrubTimeslice);
+ ScrubStorage(DoDelete, SkipCid, ScrubTimeslice);
m_TriggerScrubParams.reset();
}
@@ -1961,7 +1967,7 @@ GcScheduler::SchedulerThread()
}
void
-GcScheduler::ScrubStorage(bool DoDelete, std::chrono::seconds TimeSlice)
+GcScheduler::ScrubStorage(bool DoDelete, bool SkipCid, std::chrono::seconds TimeSlice)
{
const std::chrono::steady_clock::time_point TimeNow = std::chrono::steady_clock::now();
std::chrono::steady_clock::time_point Deadline = TimeNow + TimeSlice;
@@ -1972,13 +1978,14 @@ GcScheduler::ScrubStorage(bool DoDelete, std::chrono::seconds TimeSlice)
}
Stopwatch Timer;
- ZEN_INFO("scrubbing STARTING (delete mode => {})", DoDelete);
+ ZEN_INFO("scrubbing STARTING (delete mode => {}, skip CID => {})", DoDelete, SkipCid);
WorkerThreadPool& ThreadPool = GetSmallWorkerPool();
ScrubContext Ctx{ThreadPool, Deadline};
try
{
+ Ctx.SetSkipCas(SkipCid);
Ctx.SetShouldDelete(DoDelete);
m_GcManager.ScrubStorage(Ctx);
}