pub struct SimpleLeveledCompactionController { /* private fields */ }Implementations§
Source§impl SimpleLeveledCompactionController
impl SimpleLeveledCompactionController
pub fn new(options: SimpleLeveledCompactionOptions) -> Self
Sourcepub fn generate_compaction_task(
&self,
snapshot: &LsmStorageState,
) -> Option<SimpleLeveledCompactionTask>
pub fn generate_compaction_task( &self, snapshot: &LsmStorageState, ) -> Option<SimpleLeveledCompactionTask>
Generates a compaction task.
Returns None if no compaction needs to be scheduled. The order of SSTs in the compaction task id vector matters.
Sourcepub fn apply_compaction_result(
&self,
snapshot: &LsmStorageState,
task: &SimpleLeveledCompactionTask,
output: &[usize],
) -> (LsmStorageState, Vec<usize>)
pub fn apply_compaction_result( &self, snapshot: &LsmStorageState, task: &SimpleLeveledCompactionTask, output: &[usize], ) -> (LsmStorageState, Vec<usize>)
Apply the compaction result.
The compactor will call this function with the compaction task and the list of SST ids generated. This function applies the
result and generates a new LSM state. The functions should only change l0_sstables and levels without changing memtables
and sstables hash map. Though there should only be one thread running compaction jobs, you should think about the case
where an L0 SST gets flushed while the compactor generates new SSTs, and with that in mind, you should do some sanity checks
in your implementation.
Auto Trait Implementations§
impl Freeze for SimpleLeveledCompactionController
impl RefUnwindSafe for SimpleLeveledCompactionController
impl Send for SimpleLeveledCompactionController
impl Sync for SimpleLeveledCompactionController
impl Unpin for SimpleLeveledCompactionController
impl UnwindSafe for SimpleLeveledCompactionController
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more