Expand description
WAL segment management.
The WAL is split into fixed-size segment files for efficient truncation. Each segment is a standalone WAL file containing records within an LSN range.
§Naming convention
Segments are named wal-{first_lsn:020}.seg — zero-padded for lexicographic
ordering. This guarantees ls and readdir return segments in LSN order.
§Lifecycle
- Writer creates a new segment when the current segment exceeds
target_size. - The active segment is the one being appended to.
truncate_before(lsn)deletes all sealed segments whosemax_lsn < lsn.- The active segment is NEVER deleted — only sealed (closed) segments are eligible.
§Recovery
On startup, all segment files in the WAL directory are discovered via readdir,
sorted by first_lsn, and replayed in order. The last segment is the active one.
Re-exports§
pub use atomic_io::atomic_swap_dirs_fsync;pub use atomic_io::atomic_write_fsync;pub use atomic_io::fsync_directory;pub use atomic_io::read_checkpoint_dontneed;pub use discovery::discover_segments;pub use meta::DEFAULT_SEGMENT_TARGET_SIZE;pub use meta::SegmentMeta;pub use meta::segment_filename;pub use meta::segment_path;pub use truncate::TruncateResult;pub use truncate::truncate_segments;