diff options
| author | Jan Tuomi <jan@jantuomi.fi> | 2025-01-08 10:12:19 +0200 |
|---|---|---|
| committer | Jan Tuomi <jan@jantuomi.fi> | 2025-01-08 10:12:19 +0200 |
| commit | f19c7e6a41768e73a0f727deb22d65f1646a0777 (patch) | |
| tree | 664e6e477d5be5e2c1e49a2d73d2bf4ec6ad521a /log_db/src/lib.rs | |
| parent | bb64bc35beea7e0c46407b42a6240f084ccd137a (diff) | |
Replace iter() calls with into_iter(), add consistency asserts
Diffstat (limited to 'log_db/src/lib.rs')
| -rw-r--r-- | log_db/src/lib.rs | 36 |
1 files changed, 20 insertions, 16 deletions
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; |
