MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / discover_segments

Function discover_segments

nodedb-wal/src/segment/discovery.rs:15–40  ·  view source on GitHub ↗

Discover all WAL segments in a directory, sorted by first_lsn. Ignores non-segment files (DWB files, other metadata).

(wal_dir: &Path)

Source from the content-addressed store, hash-verified

13///
14/// Ignores non-segment files (DWB files, other metadata).
15pub fn discover_segments(wal_dir: &Path) -> Result<Vec<SegmentMeta>> {
16 if !wal_dir.exists() {
17 return Ok(Vec::new());
18 }
19
20 let entries = fs::read_dir(wal_dir).map_err(WalError::Io)?;
21 let mut segments = Vec::new();
22
23 for entry in entries {
24 let entry = entry.map_err(WalError::Io)?;
25 let file_name = entry.file_name();
26 let name = file_name.to_string_lossy();
27
28 if let Some(first_lsn) = parse_segment_filename(&name) {
29 let metadata = entry.metadata().map_err(WalError::Io)?;
30 segments.push(SegmentMeta {
31 path: entry.path(),
32 first_lsn,
33 file_size: metadata.len(),
34 });
35 }
36 }
37
38 segments.sort();
39 Ok(segments)
40}
41
42#[cfg(test)]
43mod tests {

Callers 15

openMethod · 0.85
list_segmentsMethod · 0.85
total_size_bytesMethod · 0.85
replay_all_segmentsFunction · 0.85
replay_from_limit_dirFunction · 0.85
epoch_tamper_rejectedFunction · 0.85
replay_all_segments_lazyFunction · 0.85
replay_segments_mmapFunction · 0.85
discover_empty_dirFunction · 0.85

Calls 5

parse_segment_filenameFunction · 0.70
existsMethod · 0.45
pushMethod · 0.45
pathMethod · 0.45
lenMethod · 0.45