pub enum EnhanceApplicationError {
Show 14 variants
Issue(IssueStoreError),
Setting(EnhanceSettingStoreError),
Bp(BlueprintStoreError),
Log(EnhanceLogStoreError),
Launch(TaskLaunchError),
Serialize(Error),
InvalidSemver {
label: String,
source: Error,
},
NoMatchingVersion {
req: String,
},
Engine(EngineError),
CommitShape(String),
Clock(SystemTimeError),
SpawnerAgentNotFound {
name: String,
},
EpochCeilingExceeded {
setting_id: String,
ttl_secs: u64,
},
ZeroTtl {
setting_id: String,
},
}Expand description
Failure modes of EnhanceApplication::tick and the internal
dispatch_one step it wraps.
Variants§
Issue(IssueStoreError)
The IssueStore returned an error (enqueue, pop, or status
update).
Setting(EnhanceSettingStoreError)
The EnhanceSettingStore returned an error while fetching the
active setting.
Bp(BlueprintStoreError)
The BlueprintStore returned an error while resolving the
orbit or target Blueprint.
Log(EnhanceLogStoreError)
The EnhanceLogStore returned an error while appending the
outcome entry.
Launch(TaskLaunchError)
TaskLaunchService::launch failed after setup succeeded.
Serialize(Error)
Serializing the target Blueprint (or a directive derived from it) to JSON/YAML failed.
InvalidSemver
A stored version’s version_label is not valid semver.
NoMatchingVersion
No stored version’s label satisfies the setting’s SemverReq.
Engine(EngineError)
The engine reported an error (attach / dispatch).
CommitShape(String)
final_ctx.commit did not match the strict shape
extract_commit expects, or the committer/store hashes
disagreed.
Clock(SystemTimeError)
The system clock reported a time before the UNIX epoch while
computing now_ms.
SpawnerAgentNotFound
The setting carries an EnhanceSetting::spawner override, but the
orbit Blueprint declares no agent under the name the flow’s
Step.ref points at. Fail loud: silently ignoring the override
would run the Blueprint’s own spawner while the operator believes
the swap took effect.
EpochCeilingExceeded
The drain stopped waiting on TaskLaunchService::launch after
EnhanceSetting::ttl_secs and dropped it. Carries the number it blew
through so the reason text an operator reads names the knob they can
raise, not just the fact that something stopped.
Two facts the reason text has to carry, because an operator acts on
it (see the ceiling block in dispatch_one for the evidence):
- Nothing was committed. That one is structural, not best-effort.
- Only the wait ended. A worker already running in an in-process lane
keeps running — this ceiling bounds an Operator wait, and those
lanes are not waits. So a re-post can put a second writer under the
same
project_rootas the first, which is the one thing an operator must not do by reflex on reading “timed out”.
Fields
ZeroTtl
EnhanceSetting::ttl_secs is 0.
Zero is refused rather than read as “no ceiling”. This repo has no
zero-means-unbounded TTL: mse serve refuses
worker_token_ttl_secs: 0 at startup and POST /v1/tasks rejects
timeout_secs: 0 with a 400, both on the same ground — a zero TTL
is a typo, not a policy. Inventing the sentinel here would recreate
the exact defect this ceiling exists to remove: a field whose value
does not mean what the field says it means.
The guard belongs one layer out, at POST /v1/enhance-settings,
where it could be a 400 at write time instead of a rejected issue
at dispatch time. It lives here because dispatch is the last place
that can still refuse to run an epoch it would abort on its first
poll.
Trait Implementations§
Source§impl Debug for EnhanceApplicationError
impl Debug for EnhanceApplicationError
Source§impl Display for EnhanceApplicationError
impl Display for EnhanceApplicationError
Source§impl Error for EnhanceApplicationError
impl Error for EnhanceApplicationError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<BlueprintStoreError> for EnhanceApplicationError
impl From<BlueprintStoreError> for EnhanceApplicationError
Source§fn from(source: BlueprintStoreError) -> Self
fn from(source: BlueprintStoreError) -> Self
Source§impl From<EngineError> for EnhanceApplicationError
impl From<EngineError> for EnhanceApplicationError
Source§fn from(source: EngineError) -> Self
fn from(source: EngineError) -> Self
Source§impl From<EnhanceLogStoreError> for EnhanceApplicationError
impl From<EnhanceLogStoreError> for EnhanceApplicationError
Source§fn from(source: EnhanceLogStoreError) -> Self
fn from(source: EnhanceLogStoreError) -> Self
Source§impl From<EnhanceSettingStoreError> for EnhanceApplicationError
impl From<EnhanceSettingStoreError> for EnhanceApplicationError
Source§fn from(source: EnhanceSettingStoreError) -> Self
fn from(source: EnhanceSettingStoreError) -> Self
Source§impl From<Error> for EnhanceApplicationError
impl From<Error> for EnhanceApplicationError
Source§impl From<IssueStoreError> for EnhanceApplicationError
impl From<IssueStoreError> for EnhanceApplicationError
Source§fn from(source: IssueStoreError) -> Self
fn from(source: IssueStoreError) -> Self
Source§impl From<SystemTimeError> for EnhanceApplicationError
impl From<SystemTimeError> for EnhanceApplicationError
Source§fn from(source: SystemTimeError) -> Self
fn from(source: SystemTimeError) -> Self
Source§impl From<TaskLaunchError> for EnhanceApplicationError
impl From<TaskLaunchError> for EnhanceApplicationError
Source§fn from(source: TaskLaunchError) -> Self
fn from(source: TaskLaunchError) -> Self
Auto Trait Implementations§
impl !RefUnwindSafe for EnhanceApplicationError
impl !UnwindSafe for EnhanceApplicationError
impl Freeze for EnhanceApplicationError
impl Send for EnhanceApplicationError
impl Sync for EnhanceApplicationError
impl Unpin for EnhanceApplicationError
impl UnsafeUnpin for EnhanceApplicationError
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<E> ExternalError for E
impl<E> ExternalError for E
fn into_lua_err(self) -> Error
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