pub struct TriggerStatus {Show 23 fields
pub trigger: String,
pub name: Option<String>,
pub kind: String,
pub workflow: String,
pub connector: Option<String>,
pub connector_tool: Option<String>,
pub enabled: bool,
pub paused: bool,
pub due: bool,
pub timezone: Option<String>,
pub next_due_local: Option<String>,
pub leased_by: Option<String>,
pub next_due_at: Option<i64>,
pub last_fired_at: Option<i64>,
pub consecutive_failures: u32,
pub last_error: Option<String>,
pub exhausted: bool,
pub never_fired: bool,
pub plan_head: Option<String>,
pub unusable: Option<String>,
pub cursor: Option<String>,
pub op_cursor: Option<i64>,
pub chain_root: String,
}Expand description
One trigger considered, for --dry-run and status.
Fields§
§trigger: String§name: Option<String>The declaration’s name, when it carries one.
name is what a human uses to identify a trigger, and it is accepted
on write — but nothing read it back (#73), so identity fell onto the
workflow hash, which is stable only until the plan is re-declared. It
rides in extra_fields rather than being a typed field: OMS §A.7 has
no Trigger name, and inventing one would be a spec-level decision
for a label.
kind: String§workflow: String§connector: Option<String>The connector’s name, and — when its code is a grain (#185) — the Definition that carries it.
Reported because a reader looking at a heartbeat needs to know which of the two connector kinds this is: the answer decides whether the code travelled with the memory or lives on whichever machine happens to run the pass, and that is the first question a stale-poll investigation asks.
connector_tool: Option<String>§enabled: bool§paused: bool§due: bool§timezone: Option<String>The IANA zone a SCHEDULE trigger’s cron is evaluated in (#297).
None for UTC and for every non-schedule kind. Reported because
“when is this due” now depends on it, and on a DST boundary the UTC
instant moves by an hour while the local wall time does not — so a
status surface that showed only the UTC instant would look like the
schedule had drifted.
next_due_local: Option<String>The next due instant in the trigger’s own zone, beside the UTC one
(#297). None when the zone is UTC or nothing is due.
leased_by: Option<String>§next_due_at: Option<i64>§last_fired_at: Option<i64>§consecutive_failures: u32§last_error: Option<String>§exhausted: boolWill never fire again — a one-shot past its instant.
never_fired: boolNever fired and no failure recorded — the state an unnoticed misconfiguration sits in, so it is reported rather than inferred.
plan_head: Option<String>The plan this trigger names has been EDITED: the current head of its supersession chain, when that is not the hash the trigger points at.
A Workflow is content-addressed, so editing one mints a new address and a trigger keeps starting the version it was declared against. That is the correct default — a plan edit must not silently change what fires unattended — but it is invisible without this: nothing in a listing distinguished a trigger running the current plan from one running a version three edits old, and the run itself succeeds either way.
Reported, never followed. areev trigger retarget is the deliberate
act that moves it, and it is a human’s to take.
unusable: Option<String>Why this declaration can never fire, if it cannot.
A trigger can become unusable without ever being written through a validating path — it can arrive by bundle import from an implementation that validated differently, or predate the check. So the evaluator reports it rather than assuming the write path caught everything.
cursor: Option<String>The connector’s last reported position, for a trigger that has ever polled. Opaque and connector-defined (#128) — surfaced so an operator can SEE the state that a re-pointed trigger’s evaluation carries forward, which before this was invisible even though nothing else could carry it by hand.
op_cursor: Option<i64>The op-log position, a memory trigger’s cursor equivalent.
chain_root: StringThe hash evaluation state is actually keyed under: trg:<chain_root>
(#128). Equal to trigger for a trigger that has never been
superseded — the common case, unchanged from before this field
existed. Differs only for a trigger re-pointed by SUPERSEDE, where
it names the ORIGINAL declaration’s hash — the identity the cursor
and dedup fence actually survive under.
Trait Implementations§
Source§impl Clone for TriggerStatus
impl Clone for TriggerStatus
Source§impl Debug for TriggerStatus
impl Debug for TriggerStatus
Auto Trait Implementations§
impl Freeze for TriggerStatus
impl RefUnwindSafe for TriggerStatus
impl Send for TriggerStatus
impl Sync for TriggerStatus
impl Unpin for TriggerStatus
impl UnsafeUnpin for TriggerStatus
impl UnwindSafe for TriggerStatus
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