ensure sync

Signed-off-by: Alex Chi <iskyzh@gmail.com>
This commit is contained in:
Alex Chi
2024-01-20 11:16:55 +08:00
parent b1458a66b2
commit 4928ececba
4 changed files with 39 additions and 3 deletions

View File

@@ -0,0 +1,17 @@
use crate::lsm_storage::MiniLsm;
impl MiniLsm {
pub fn dump_structure(&self) {
let snapshot = self.inner.state.read();
if !snapshot.l0_sstables.is_empty() {
println!(
"L0 ({}): {:?}",
snapshot.l0_sstables.len(),
snapshot.l0_sstables,
);
}
for (level, files) in &snapshot.levels {
println!("L{level} ({}): {:?}", files.len(), files);
}
}
}

View File

@@ -1,5 +1,6 @@
pub mod block; pub mod block;
pub mod compact; pub mod compact;
pub mod debug;
pub mod iterators; pub mod iterators;
pub mod lsm_iterator; pub mod lsm_iterator;
pub mod lsm_storage; pub mod lsm_storage;

View File

@@ -20,8 +20,10 @@ use crate::lsm_storage::BlockCache;
pub struct BlockMeta { pub struct BlockMeta {
/// Offset of this data block. /// Offset of this data block.
pub offset: usize, pub offset: usize,
/// The first key of the data block, mainly used for index purpose. /// The first key of the data block.
pub first_key: Bytes, pub first_key: Bytes,
/// The last key of the data block.
pub last_key: Bytes,
} }
impl BlockMeta { impl BlockMeta {
@@ -138,7 +140,23 @@ impl SsTable {
/// Get number of data blocks. /// Get number of data blocks.
pub fn num_of_blocks(&self) -> usize { pub fn num_of_blocks(&self) -> usize {
unimplemented!() self.block_metas.len()
}
pub fn first_key(&self) -> &Bytes {
&self.first_key
}
pub fn last_key(&self) -> &Bytes {
&self.last_key
}
pub fn table_size(&self) -> u64 {
self.file.1
}
pub fn sst_id(&self) -> usize {
self.id
} }
} }

View File

@@ -5,7 +5,7 @@ pub use builder::BlockBuilder;
use bytes::{Buf, BufMut, Bytes}; use bytes::{Buf, BufMut, Bytes};
pub use iterator::BlockIterator; pub use iterator::BlockIterator;
pub const SIZEOF_U16: usize = std::mem::size_of::<u16>(); pub(crate) const SIZEOF_U16: usize = std::mem::size_of::<u16>();
/// A block is the smallest unit of read and caching in LSM tree. It is a collection of sorted /// A block is the smallest unit of read and caching in LSM tree. It is a collection of sorted
/// key-value pairs. /// key-value pairs.