pub struct BlobsView {
pub held: TallyView,
pub referenced: TallyView,
pub unreferenced: TallyView,
pub collectable: TallyView,
pub missing_at_boot: TallyView,
pub discarded_at_boot: TallyView,
}Expand description
The blobs member of StatsResponse: this deployment’s blobs, by the
state each one is in.
Aggregates over every repository and nothing narrower. bot.did.stats is
open by default — auth::Disclosure — so a figure that said which
account held what would publish one account’s content to anyone who
asked; a total cannot. The names of the blobs an incomplete restore lost
are in the startup log, where the operator is, and didbot_pds::Reconciled
keeps a sample of them for that line.
Fields§
§held: TallyViewEvery blob the log names, whatever state it is in.
held.count and held.bytes are this deployment’s blob inventory
and its blob footprint. The three states below partition this one and
sum back to it.
referenced: TallyViewBlobs at least one live record points at.
unreferenced: TallyViewBlobs no live record points at, still inside the collection grace window.
The ordinary state of every upload between uploadBlob and the
createRecord that names it, so a nonzero reading is a working
server rather than a problem.
collectable: TallyViewBlobs no live record points at whose grace window has run out: what the next collection pass will take, and the quota it will give back.
A figure that climbs and does not fall is the one an operator acts on — it says collection is not getting through.
missing_at_boot: TallyViewBlobs the log named whose bytes the disk did not have when this server last started.
Named for when it was read, because that is the only way to read it:
it is what the startup reconcile counted, held for the life of the
process. Nonzero means this deployment came back from an incomplete
copy and will answer 404 for that many blobs until they are put
back, and bytes is how much a restore would have to bring. Zero
means the disk agreed with the log at that start, not that it
agrees now: nothing recounts while the server runs, and a restart is
what takes the reading again.
These blobs are in held as well. The log names them, so listBlobs
still does.
discarded_at_boot: TallyViewBytes the disk held that the log named none of, deleted during that same startup.
An upload interrupted before it was named, a blob whose bytes landed
and whose log entry did not, or an account directory the log no
longer mentions. Nonzero after a restore says the copy carried blob
bytes the log could not account for. Nothing counted here is in
held.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for BlobsView
impl<'de> Deserialize<'de> for BlobsView
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Copy for BlobsView
impl Eq for BlobsView
impl StructuralPartialEq for BlobsView
Auto Trait Implementations§
impl Freeze for BlobsView
impl RefUnwindSafe for BlobsView
impl Send for BlobsView
impl Sync for BlobsView
impl Unpin for BlobsView
impl UnsafeUnpin for BlobsView
impl UnwindSafe for BlobsView
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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