Signed-off-by: Alex Chi <iskyzh@gmail.com>
This commit is contained in:
Alex Chi
2024-01-18 15:15:51 +08:00
parent 714bfc60e9
commit 9620a57211
5 changed files with 26 additions and 15 deletions

View File

@@ -9,7 +9,11 @@ Build a simple key-value storage engine in a week!
The tutorial is available at [https://skyzh.github.io/mini-lsm](https://skyzh.github.io/mini-lsm). You can use the provided starter
code to kick off your project, and follow the tutorial to implement the LSM tree.
Join the mini-lsm community: [![Join skyzh's Discord Server](https://dcbadge.vercel.app/api/server/ZgXzxpua3H)](https://skyzh.dev/join/discord)
## Community
You may join skyzh's Discord server and study with the mini-lsm community.
[![Join skyzh's Discord Server](https://dcbadge.vercel.app/api/server/ZgXzxpua3H)](https://skyzh.dev/join/discord)
## Development

View File

@@ -218,6 +218,9 @@ impl LsmStorage {
let iter = TwoMergeIterator::create(memtable_iter, table_iter)?;
Ok(FusedIterator::new(LsmIterator::new(iter, map_bound(upper))?))
Ok(FusedIterator::new(LsmIterator::new(
iter,
map_bound(upper),
)?))
}
}

View File

@@ -37,7 +37,9 @@ impl LsmStorage {
let mut iters = Vec::new();
iters.reserve(tables.len());
for table in tables.iter() {
iters.push(Box::new(SsTableIterator::create_and_seek_to_first(table.clone())?));
iters.push(Box::new(SsTableIterator::create_and_seek_to_first(
table.clone(),
)?));
}
let mut iter = MergeIterator::create(iters);

View File

@@ -166,17 +166,16 @@ impl LeveledCompactionController {
.copied()
.collect::<HashSet<_>>();
if let Some(upper_level) = task.upper_level {
let new_upper_level_ssts =
snapshot.levels[upper_level - 1]
.1
.iter()
.filter_map(|x| {
if upper_level_sst_ids_set.remove(x) {
return None;
}
Some(*x)
})
.collect::<Vec<_>>();
let new_upper_level_ssts = snapshot.levels[upper_level - 1]
.1
.iter()
.filter_map(|x| {
if upper_level_sst_ids_set.remove(x) {
return None;
}
Some(*x)
})
.collect::<Vec<_>>();
assert!(upper_level_sst_ids_set.is_empty());
snapshot.levels[upper_level - 1].1 = new_upper_level_ssts;
} else {

View File

@@ -223,6 +223,9 @@ impl LsmStorage {
let iter = TwoMergeIterator::create(memtable_iter, table_iter)?;
Ok(FusedIterator::new(LsmIterator::new(iter, map_bound(upper))?))
Ok(FusedIterator::new(LsmIterator::new(
iter,
map_bound(upper),
)?))
}
}