pub struct EvalReport {Show 13 fields
pub claimed: usize,
pub skipped_not_due: usize,
pub skipped_locked: usize,
pub skipped_paused: usize,
pub items: usize,
pub duplicates: usize,
pub runs_started: usize,
pub ingested: usize,
pub unidentifiable: usize,
pub unusable: usize,
pub errors: Vec<String>,
pub draining: Vec<String>,
pub cursor_held: Vec<String>,
}Expand description
What one evaluation pass did. Shaped like loop run’s report for symmetry.
Fields§
§claimed: usize§skipped_not_due: usize§skipped_locked: usize§skipped_paused: usize§items: usize§duplicates: usize§runs_started: usize§ingested: usizeItems recorded without starting a workflow, because no runtime is wired
in. Counted apart from runs_started so the report never claims a run
happened when none did.
unidentifiable: usizeItems the connector returned that carry no usable identity, so no run could be minted for them. Reported rather than silently dropped: an item nobody can name is a connector bug, and it should be visible as one.
unusable: usizeDeclarations that cannot fire as written — a cron that does not parse, a timezone this build refuses, a composite gate naming a member the declaration does not carry.
Counted APART from skipped_not_due on purpose. Folded in there, an
unusable trigger is indistinguishable from a healthy one waiting its
turn, which is the failure mode with no symptom: the work simply never
happens and every report looks green. The reason lands in errors.
errors: Vec<String>Not fatal to the pass: one broken trigger must not stop the others.
draining: Vec<String>A connector reported a backlog, so this trigger is due again at once rather than after its interval.
cursor_held: Vec<String>Triggers whose cursor was deliberately left unmoved this pass because
at least one item in the firing failed to start a run (#129) — the
Event add failed, declared context was unavailable, or the run
itself refused. The same page is offered again next tick; whatever
already started comes back as a duplicates count rather than
double-processing, which is what makes re-polling safe — see #128’s
stable run ids, a prerequisite for this.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for EvalReport
impl RefUnwindSafe for EvalReport
impl Send for EvalReport
impl Sync for EvalReport
impl Unpin for EvalReport
impl UnsafeUnpin for EvalReport
impl UnwindSafe for EvalReport
Blanket Implementations§
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> Fruit for T
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