Skip to main content

LfsMedia

Struct LfsMedia 

Source
pub struct LfsMedia { /* private fields */ }
Expand description

The LFS-media alkblobs::LivenessSource — the second alkgit-owned liveness source (substrate.md §GC source 2; ADR-022 §4): the pointer-lifecycle rows as the media family’s live set, a mark consult that reads the rows (no graph walk) and an arbitration consult that answers from the mark’s index. See the module docs’ LFS section for the walk-not-walk posture, the invalidation decision, and the cross-process residual.

Implementations§

Source§

impl LfsMedia

Source

pub fn new(rows: Arc<dyn LfsRows>, writes: Arc<AtomicU64>) -> Arc<Self> ⓘ

The source over the rows surface and the composition’s shared assert counter (the VersionedLfsRows wrapper bumps the same counter per committed assert through it — the bump-after-commit half of the epoch discipline). Construct within the running runtime (the assembly does): the constructor captures Handle::current() for the mark consult’s bridge.

Source

pub fn register(self: &Arc<Self>, store: &Store) -> Result<Registration, Error>

Register the source with the store — the live-shared seam (Store::register_liveness_source; the composition entry’s second registration leg, the fail-safe default ADR-022 §6: an unregistered media source lets sweeps eat referenced media on the first mixed-feature deployment). Registration once, at construction; the returned token is deregister-at-most-once and is the composition’s to keep.

Source

pub fn keys_builds(&self) -> u64

How many mark consults have run — the rebuild-per-mark posture’s pin (no fingerprint memo: every mark consult re-reads the rows; the arbitration consult never triggers one).

Trait Implementations§

Source§

impl LivenessSource for LfsMedia

Available on crate feature lfs only.
Source§

fn live_keys(&self) -> Vec<Key>

The mark-time consult — rebuild-per-mark (the module docs’ LFS section; the row read is the whole walk). A failed rows read answers empty with the memo untouched: the staged candidates arbitrate against the stale index (the previous mark’s) — conservative for keys live at that build, and the next mark corrects. The alternative postures (blocking or panicking the sweep’s mark) are worse.

Source§

fn contains(&self, key: &Key) -> bool

The delete-time arbitration consult — under the store’s arbitration lock, quick, indexed, never blocking (no bridge, no reads, no recompute):

  • an index hit answers exactly (true — the key was live at the last mark);
  • a cold (never-marked) source answers true — the safe default (unknown is live); direct deletes under it refuse (alkblobs::Error::GcRefuse, the ADR-012 §6.4 flow);
  • an index miss after a moved assert counter answers true too — a row may have landed since the build (unknown is live): the candidate cancels and resolves on the next mark’s rebuild, one delayed sweep.

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more