pub struct CheckpointInfo {
pub sst_files: usize,
pub blob_files: usize,
pub total_bytes: u64,
pub version_id: u64,
pub seqno: SeqNo,
}Expand description
Summary of a checkpoint produced by
AbstractTree::create_checkpoint.
All byte counts are logical file sizes — hard links share the underlying inode storage, so a checkpoint’s marginal disk usage is typically zero until the original files are compacted away.
Fields§
§sst_files: usizeNumber of SST files captured.
blob_files: usizeNumber of blob (value-log) files captured. Always 0 for a
standard Tree.
total_bytes: u64Sum of the logical file sizes of every file the checkpoint captured:
the SSTs, the blob files, and the .restrict-bound sidecar that belongs
to a tight-space-restricted SST (per-table state, written beside its
table, that a restore needs to recover the exact bound). Tree-level
metadata — the manifest, the version pointer, the config — is NOT
counted: this figure describes the captured data, not the whole
directory.
It measures the same SET of files as
StorageStats::used_bytes, which
reports them PHYSICALLY, so the two differ by exactly the bytes a
tight-space reclaim punched out and agree everywhere else.
version_id: u64The version ID embedded in the checkpoint’s current pointer.
seqno: SeqNoLower-bound visible-seqno watermark for the snapshot.
Captured from the tree’s visible_seqno generator BEFORE
AbstractTree::current_version. Following the standard
“lowest-excluded” watermark convention, info.seqno = N means
every record with seqno < N was committed at sample time and
is therefore guaranteed to be present in the snapshot. Records
with seqno == N may or may not be included (writers can hold
a record in the memtable for an instant before publishing the
next watermark); records with seqno > N may also be present
(writers can advance the counter between sample and version
snapshot, and those keys still land in the captured memtable).
PITR consumers MUST use seqno < info.seqno as the inclusion
gate. Using <= (treating this as a max-included ceiling)
could move a recovery cutoff past data still needed from WAL
or replication; the field is a strict lower-exclusive watermark,
not a max-included ceiling.
Trait Implementations§
Source§impl Clone for CheckpointInfo
impl Clone for CheckpointInfo
Source§fn clone(&self) -> CheckpointInfo
fn clone(&self) -> CheckpointInfo
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for CheckpointInfo
Auto Trait Implementations§
impl Freeze for CheckpointInfo
impl RefUnwindSafe for CheckpointInfo
impl Send for CheckpointInfo
impl Sync for CheckpointInfo
impl Unpin for CheckpointInfo
impl UnsafeUnpin for CheckpointInfo
impl UnwindSafe for CheckpointInfo
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more