Skip to main content

SnapshotRoots

Struct SnapshotRoots 

Source
pub struct SnapshotRoots {
    pub bindings: BTreeSet<(String, String)>,
    pub checkpoints: BTreeSet<(String, String)>,
    pub archived_checkpoints: BTreeSet<(String, String)>,
    pub lane_heads: BTreeSet<(String, String)>,
}
Expand description

Everything that keeps a lane rev alive, kept apart by where the claim came from so cleanup can explain retained disk instead of just retaining it.

Checkpoints are roots even for instances whose binding record has been archived. A checkpoint pointing at a pruned rev is not a smaller store, it is a broken undo.

Fields§

§bindings: BTreeSet<(String, String)>

Claimed by a surviving instance’s tracker binding.

§checkpoints: BTreeSet<(String, String)>

Claimed by any checkpoint record, live or archived.

§archived_checkpoints: BTreeSet<(String, String)>

The subset of checkpoints claimed only by instances whose binding record is gone. These are the claims a purge can release, so cleanup can say so instead of reporting retained disk with no way out.

§lane_heads: BTreeSet<(String, String)>

Claimed by a lane’s own head (LATEST), which new instances project.

Implementations§

Source§

impl SnapshotRoots

Source

pub fn collect( store: &MetadataStore, branches: &[BranchInstance], archived: ArchivedCheckpoints, ) -> Result<Self>

branches is the set of instances that survive the cleanup pass, not everything on disk — a record about to be archived must not keep its unreferenced captures alive.

archived says what to do with the checkpoint logs of instances that have no surviving record: Keep (the default) treats them as roots like any other checkpoint, Purge ignores them, because the caller is discarding them in the same pass — which is what makes a purging dry run report exactly what the real run would remove.

Source

pub fn contains(&self, tracker: &str, rev: &str) -> bool

Source

pub fn pinned_only_by_checkpoints( &self, ) -> impl Iterator<Item = &(String, String)>

Revs held only because some checkpoint references them — the disk a user might otherwise expect cleanup to have reclaimed.

Source

pub fn pinned_only_by_archived_checkpoints( &self, ) -> impl Iterator<Item = &(String, String)>

Of those, the ones no live instance’s checkpoint also claims: purging the archived logs would release exactly these.

Trait Implementations§

Source§

impl Clone for SnapshotRoots

Source§

fn clone(&self) -> SnapshotRoots

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SnapshotRoots

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SnapshotRoots

Source§

fn default() -> SnapshotRoots

Returns the “default value” for a type. Read more
Source§

impl Eq for SnapshotRoots

Source§

impl PartialEq for SnapshotRoots

Source§

fn eq(&self, other: &SnapshotRoots) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for SnapshotRoots

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.