aboutsummaryrefslogtreecommitdiffstats
path: root/log_db
diff options
context:
space:
mode:
Diffstat (limited to 'log_db')
-rw-r--r--log_db/src/common.rs26
-rw-r--r--log_db/src/lib.rs36
-rw-r--r--log_db/src/record.rs2
3 files changed, 22 insertions, 42 deletions
diff --git a/log_db/src/common.rs b/log_db/src/common.rs
index 8bdcd9a..1841175 100644
--- a/log_db/src/common.rs
+++ b/log_db/src/common.rs
@@ -104,22 +104,6 @@ impl LogKeySet {
LogKeySet { set }
}
- pub fn from_slice(keys: &[LogKey]) -> Self {
- assert!(
- !keys.is_empty(),
- "LogKeySet::from_slice must be supplied a non-empty slice"
- );
- let mut set = HashSet::with_capacity(keys.len());
- keys.iter().for_each(|key| {
- set.insert(key.clone());
- });
- LogKeySet { set }
- }
-
- pub fn iter(&self) -> std::collections::hash_set::Iter<'_, LogKey> {
- self.set.iter()
- }
-
pub fn contains(&self, key: &LogKey) -> bool {
self.set.contains(key)
}
@@ -784,13 +768,3 @@ pub fn request_exclusive_lock(data_dir: &Path, file: &mut fs::File) -> Result<()
Ok(())
}
-
-macro_rules! dbg_trace {
- ($($args: expr),*) => {
- print!("TRACE: file: {}, line: {}", file!(), line!());
- $(
- print!(", {}: {:?}", stringify!($args), $args);
- )*
- println!(""); // to get a new line at the end
- }
-}
diff --git a/log_db/src/lib.rs b/log_db/src/lib.rs
index 4d9b82f..eb9cfe9 100644
--- a/log_db/src/lib.rs
+++ b/log_db/src/lib.rs
@@ -383,6 +383,8 @@ impl<R: Recordable> DB<R> {
let serialized = &record.serialize();
let record_offset = self.active_data_file.seek(SeekFrom::End(0))?;
let record_length = serialized.len() as u64;
+ assert!(record_length > 0);
+
self.active_data_file.write_all(serialized)?;
// Flush and sync data to disk
@@ -400,8 +402,8 @@ impl<R: Recordable> DB<R> {
// Write the record metadata to the metadata file
let mut metadata_buf = vec![];
- metadata_buf.extend(&record_offset.to_be_bytes());
- metadata_buf.extend(&record_length.to_be_bytes());
+ metadata_buf.extend(record_offset.to_be_bytes().into_iter());
+ metadata_buf.extend(record_length.to_be_bytes().into_iter());
assert_eq!(metadata_buf.len(), 16);
self.active_metadata_file.write_all(&metadata_buf)?;
@@ -429,11 +431,11 @@ impl<R: Recordable> DB<R> {
// These post-condition asserts are commented out since they seemed
// to sometimes report false positives.
//
- // let len = self.active_metadata_file.seek(SeekFrom::End(0))?;
- // assert!(len >= METADATA_FILE_HEADER_SIZE as u64);
- // assert_eq!((len - METADATA_FILE_HEADER_SIZE as u64) % 16, 0);
- // let data_file_len = self.active_data_file.seek(SeekFrom::End(0))?;
- // assert_eq!(data_file_len, record_offset + record_length);
+ let len = self.active_metadata_file.seek(SeekFrom::End(0))?;
+ assert!(len >= METADATA_FILE_HEADER_SIZE as u64);
+ assert_eq!((len - METADATA_FILE_HEADER_SIZE as u64) % 16, 0);
+ let data_file_len = self.active_data_file.seek(SeekFrom::End(0))?;
+ assert_eq!(data_file_len, record_offset + record_length);
Ok(())
}
@@ -497,6 +499,7 @@ impl<R: Recordable> DB<R> {
let data_offset = u64::from_be_bytes(metadata_buf[0..8].try_into().unwrap());
let data_length = u64::from_be_bytes(metadata_buf[8..16].try_into().unwrap());
+ assert!(data_length > 0);
let data_path = &self.data_dir.join(metadata_header.uuid.to_string());
let mut data_file = READ_MODE.open(&data_path)?;
@@ -585,7 +588,7 @@ impl<R: Recordable> DB<R> {
debug!("Found log keys in secondary memtable: {:?}", log_keys);
let mut records = vec![];
- for log_key in log_keys.iter() {
+ for log_key in log_keys.into_iter() {
// TODO optimize this so that a given segment is only opened once per find_by, and not for every log key
let segment_num = log_key.segment_num();
let segment_index = log_key.index();
@@ -606,6 +609,7 @@ impl<R: Recordable> DB<R> {
let data_offset = u64::from_be_bytes(metadata_buf[0..8].try_into().unwrap());
let data_length = u64::from_be_bytes(metadata_buf[8..16].try_into().unwrap());
+ assert!(data_length > 0);
let data_path = &self.data_dir.join(metadata_header.uuid.to_string());
let mut data_file = READ_MODE.open(&data_path)?;
@@ -699,8 +703,8 @@ impl<R: Recordable> DB<R> {
}
let mut metadata_entry = vec![];
- metadata_entry.extend(offset.to_be_bytes().iter());
- metadata_entry.extend(length.to_be_bytes().iter());
+ metadata_entry.extend(offset.to_be_bytes().into_iter());
+ metadata_entry.extend(length.to_be_bytes().into_iter());
self.active_metadata_file.write_all(&metadata_entry)?;
@@ -755,8 +759,8 @@ impl<R: Recordable> DB<R> {
}
let mut metadata_entry = vec![];
- metadata_entry.extend(offset.to_be_bytes().iter());
- metadata_entry.extend(length.to_be_bytes().iter());
+ metadata_entry.extend(offset.to_be_bytes().into_iter());
+ metadata_entry.extend(length.to_be_bytes().into_iter());
self.active_metadata_file.write_all(&metadata_entry)?;
@@ -867,11 +871,11 @@ impl<R: Recordable> DB<R> {
let metadata_offset = original_index * 16;
- for (i, byte) in offset.to_be_bytes().iter().enumerate() {
- metadata_rows_buf[metadata_offset + i] = *byte;
+ for (i, byte) in offset.to_be_bytes().into_iter().enumerate() {
+ metadata_rows_buf[metadata_offset + i] = byte;
}
- for (i, byte) in len.to_be_bytes().iter().enumerate() {
- metadata_rows_buf[metadata_offset + 8 + i] = *byte;
+ for (i, byte) in len.to_be_bytes().into_iter().enumerate() {
+ metadata_rows_buf[metadata_offset + 8 + i] = byte;
}
offset += len;
diff --git a/log_db/src/record.rs b/log_db/src/record.rs
index 8d518f0..61939e1 100644
--- a/log_db/src/record.rs
+++ b/log_db/src/record.rs
@@ -23,6 +23,8 @@ impl Record {
}
pub fn deserialize(bytes: &[u8]) -> Record {
+ assert!(bytes.len() > 0);
+
let mut values = Vec::new();
let tombstone = bytes[0] == B_TOMBSTONE;