pub enum SyncMode {
Full,
Normal,
Off,
}Expand description
Durability mode for FileHandle::sync_data.
SyncMode is the user-visible knob that selects the cross-platform
fsync primitive obj calls after a WAL commit. The contract for
each variant is documented in docs/format.md § SyncMode.
The default is SyncMode::Full: a commit that returns
Ok(()) is durable across a system-wide power loss. Normal is
the throughput-tuned middle ground; Off skips the syscall and is
only safe for tests and benchmarks.
Power-of-ten Rule 5: a three-state enum is far cheaper to audit
than three bool knobs, and the variants are exhaustive at every
match.
Variants§
Full
Strongest durability. Survives system-wide power loss.
Maps to fcntl(F_FULLFSYNC) on macOS (forces the drive cache
to flush), FlushFileBuffers on Windows, and fdatasync on
Linux / BSDs. macOS’s plain fsync is not sufficient
here — it does not flush the drive cache; F_FULLFSYNC does.
This is the standard wisdom for safety-critical macOS storage.
Normal
Process-crash and kernel-panic durability; may lose data on a sudden power loss if the drive’s write cache has not been flushed by the time the OS acknowledges the call.
Maps to fsync on Unix and FlushFileBuffers on Windows. On
Windows there is no weaker primitive than FlushFileBuffers,
so Normal and Full are equivalent there.
Off
No durability call. The OS may write the data eventually, but
obj does not ask it to. Use only for tests and benchmarks
where data loss is acceptable.