pub struct RetainedCandidates {
pub referenced: u64,
pub grace_window: u64,
pub no_provider_timestamp: u64,
pub degraded_roots: u64,
pub unrecognized_key: u64,
pub checkpoint_not_releasable: u64,
pub upload_session_window: u64,
pub upload_session_undecided: u64,
pub content_scan_deferred: u64,
}Expand description
Why a pass kept what it kept: retained_candidates split by the
decision that spared each candidate.
The reasons are a closed set — one per place the sweep decides against
deleting — so every field is always reported, and a zero is the answer
that nothing was kept for that reason. The counts sum to
retained_candidates.
Retention is a decision per candidate examined, not per object in the namespace: one object examined by two passes is counted by each.
Fields§
§referenced: u64Selected as unreachable, then found reachable by the re-verification that runs immediately before every deletion. A candidate the pass already knew was reachable is never examined at all, so this counts the namespace moving underneath the pass rather than the size of its live set.
grace_window: u64Unreachable, but younger than the grace window by the object’s own provider timestamp. A later pass deletes it.
no_provider_timestamp: u64Unreachable, and the provider reported no last-modified time at all, so the object’s age is unknown and it is treated as young.
degraded_roots: u64Root resolution failed somewhere in this pass, so manifest and table
deletion was suppressed wholesale (degraded_retention is set too).
unrecognized_key: u64A key under a swept family that this collector does not recognize as one of its own. Never deleted, whatever its age.
checkpoint_not_releasable: u64A checkpoint record this pass could have advanced but could not
prove ready: a lost compare-and-swap, an unreadable record, a fork
target not provably gone, a released record still inside its grace
window, or an active pin that is simply doing its job. The pins
themselves are listed by
GET /v0/admin/namespaces/{ns}/checkpoints.
upload_session_window: u64An upload session waiting out a window a clock resolves: an open
session’s lease plus the grace, an aborted session’s grace, or a
completed session’s derived content-reclamation grace.
next_reclamation_at_ms reports the soonest of these.
upload_session_undecided: u64An upload session held over for a reason no clock resolves: a lost compare-and-swap, a record that vanished mid-pass, or a reference set this pass could not establish. Only a later pass answers it.
content_scan_deferred: u64A completed session whose content reclamation was skipped because
the reference scan did not fit in max_objects
(content_reclamation_deferred is set too).
Implementations§
Source§impl RetainedCandidates
impl RetainedCandidates
Sourcepub fn by_reason(&self) -> [(&'static str, u64); 9]
pub fn by_reason(&self) -> [(&'static str, u64); 9]
Every reason and its count, in a fixed order, for callers that report the breakdown rather than read one field of it.
Sourcepub fn top_reason(&self) -> Option<(&'static str, u64)>
pub fn top_reason(&self) -> Option<(&'static str, u64)>
The reason with the highest count, and that count. None when
nothing was retained. Ties go to the first in Self::by_reason
order, so one pass’s report is stable.
Trait Implementations§
Source§impl Clone for RetainedCandidates
impl Clone for RetainedCandidates
Source§fn clone(&self) -> RetainedCandidates
fn clone(&self) -> RetainedCandidates
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more