pub struct OrphanStore {
pub path: RepoRef,
pub dir: PathBuf,
pub bytes: u64,
pub hash_marker: Option<String>,
pub modified_unix_ms: i64,
pub failed_reclaim: Option<String>,
}Expand description
A store directory with no catalog row and no soft-delete tombstone: an
ORPHAN, as repo list-orphans reports it.
This is the class of bytes nothing on the box could see before 2026-08-30.
repo list reads the catalog and an orphan is not in it; repo list-deleted, repo purge, repo undelete and the expiry sweep all key
off a Deleted tombstone and an orphan has none. Every reclaim path was
keyed off a record that had gone.
The listing invariant this type exists to make true: every <name>.git
directory under repos/ appears in exactly one of repo list, repo list-deleted and repo list-orphans — so no directory on the disk is
invisible to every door.
Fields§
§path: RepoRefThe name the directory stands at.
dir: PathBufWhere it is, for an operator with a shell — and there is none on the appliance, which is why the other fields exist.
bytes: u64What it is holding.
hash_marker: Option<String>The OBJECT_FORMAT marker, when it has one. None is a store written
before the marker existed, and it is what create --adopt --hash takes
the caller’s word about.
modified_unix_ms: i64Newest mtime under the directory, so an operator can tell Friday’s wreckage from something still being written to.
failed_reclaim: Option<String>A tombstone that is not a soft delete — a reclaim that FAILED and
is owed to an operator. Those are orphans too: tombstones() filters
them out of list-deleted on purpose, so without this they would be in
no listing at all.
Trait Implementations§
Source§impl Clone for OrphanStore
impl Clone for OrphanStore
Auto Trait Implementations§
impl Freeze for OrphanStore
impl RefUnwindSafe for OrphanStore
impl Send for OrphanStore
impl Sync for OrphanStore
impl Unpin for OrphanStore
impl UnsafeUnpin for OrphanStore
impl UnwindSafe for OrphanStore
Blanket Implementations§
impl<T> Allocation for T
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request