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 migration::migrate_legacy_wal;pub use truncate::TruncateResult;pub use truncate::truncate_segments;
Modules§
- atomic_
io - Durable atomic file / directory operations for checkpoint-class writes.
- discovery
- Discovery of WAL segment files in a directory.
- meta
- Segment filename conventions and on-disk metadata.
- migration
- One-time migration from legacy single-file WAL to segmented layout.
- truncate
- Sealed segment truncation after checkpoint LSN advances.