pub struct DoctorReport {
pub findings: Vec<DoctorFinding>,
pub synced: Asked<Vec<String>>,
pub introspect_answered: usize,
pub live_producers: usize,
pub describe_served: usize,
pub describe_missing: usize,
pub routers: usize,
pub router_version: Option<String>,
pub deep: bool,
pub observation: Option<ObservationSummary>,
}Expand description
The full doctor run: findings plus the coverage summary that makes an empty findings list legible (what was checked, not just what was found — RFC 05 §3.1: silence needs attribution).
Fields§
§findings: Vec<DoctorFinding>§synced: Asked<Vec<String>>Producer slices confirmed in sync with the local registry
(origin/producer).
NotAsked = no local registry was given, so the served-vs-declared
diff never ran — which must not read like “ran, none in sync”
(RFC 09 §5.1 O4). Asked(vec![]) = the diff ran and confirmed
nothing; the findings say why. The Vec used to skip-if-empty, which
conflated the two (review finding R1); the Option that fixed it is
now Asked, wire-identically (#246 / P1).
introspect_answered: usizeIntrospect replies received across the fleet.
live_producers: usizeProducers on the liveliness roster.
describe_served: usizeProducers serving an RFC 08 §7 describe.
describe_missing: usizeProducers serving no describe (a SHOULD, not a MUST).
routers: usizeRouters that answered the admin sweep.
router_version: Option<String>§deep: boolWhether the --deep freshness/storage checks ran.
observation: Option<ObservationSummary>The passive listening phase (--for, #161) — absent when it did
not run, so pre-#161 JSON consumers see an unchanged document.
Implementations§
Source§impl DoctorReport
impl DoctorReport
pub fn count(&self, severity: DoctorSeverity) -> usize
Trait Implementations§
Source§impl Clone for DoctorReport
impl Clone for DoctorReport
Source§fn clone(&self) -> DoctorReport
fn clone(&self) -> DoctorReport
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DoctorReport
impl Debug for DoctorReport
Auto Trait Implementations§
impl Freeze for DoctorReport
impl RefUnwindSafe for DoctorReport
impl Send for DoctorReport
impl Sync for DoctorReport
impl Unpin for DoctorReport
impl UnsafeUnpin for DoctorReport
impl UnwindSafe for DoctorReport
Blanket Implementations§
Source§impl<Source> AccessAs for Source
impl<Source> AccessAs for Source
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> 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