feat: make garbage collection opt-out (#28)

This commit is contained in:
Eric Ridge
2025-01-30 13:38:05 -05:00
committed by Stu Hood
parent 26d623c411
commit 65d3574dfd
2 changed files with 17 additions and 0 deletions

View File

@@ -278,6 +278,12 @@ pub trait Directory: DirectoryClone + fmt::Debug + Send + Sync + 'static {
) -> Option<Box<dyn MergePolicy>> {
None
}
/// Returns true if this directory supports garbage collection. The default assumption is
/// `true`
fn supports_garbage_collection(&self) -> bool {
true
}
}
/// DirectoryClone

View File

@@ -117,6 +117,13 @@ impl ManagedDirectory {
&mut self,
get_living_files: L,
) -> crate::Result<GarbageCollectionResult> {
if !self.supports_garbage_collection() {
// the underlying directory does not support garbage collection.
return Ok(GarbageCollectionResult {
deleted_files: vec![],
failed_to_delete_files: vec![],
});
}
let mut files_to_delete = vec![];
// We're about to do an atomic write to managed.json, lock it down
@@ -359,6 +366,10 @@ impl Directory for ManagedDirectory {
self.directory
.reconsider_merge_policy(metas, previous_metas)
}
fn supports_garbage_collection(&self) -> bool {
self.directory.supports_garbage_collection()
}
}
impl Clone for ManagedDirectory {