pub enum PendingCountError {
SharedStoreUnresolvable,
SharedStoreUnreadable {
path: PathBuf,
error: String,
},
ChannelStoreUnreadable {
path: PathBuf,
error: String,
global_pending: usize,
},
}Expand description
Why a pending count could not be determined. Distinguished from “zero pending” on purpose: a caller deciding whether the schema is current must be able to tell “nothing to do” from “I could not tell”, because the safe reaction to each is opposite.
Variants§
No shared store path resolves (CI, or an env with no
AGENTMUX_SHARED_DIR). Global-scope migrations cannot be counted.
The shared store exists but would not open.
ChannelStoreUnreadable
The channel store would not open. Channel-scoped migrations cannot be counted. Carries the global-scope count that WAS readable, so the lenient wrapper can keep reporting it — but it is still an error, because a partial count must not be mistaken for a complete one.
Implementations§
Source§impl PendingCountError
impl PendingCountError
Sourcepub fn readable_pending(&self) -> usize
pub fn readable_pending(&self) -> usize
The pending count that WAS readable despite this error — the global-scope half when only the channel store failed, otherwise none at all.
For callers that must not block on an unreadable store (the
AGENTMUXSRV-MIGRATING hint, which only sizes a timeout, and the
ESTART report, which runs after the migration batch). A caller
deciding anything on the count must handle the error instead — see
try_count_pending_migrations.
Trait Implementations§
Source§impl Debug for PendingCountError
impl Debug for PendingCountError
Auto Trait Implementations§
impl Freeze for PendingCountError
impl RefUnwindSafe for PendingCountError
impl Send for PendingCountError
impl Sync for PendingCountError
impl Unpin for PendingCountError
impl UnsafeUnpin for PendingCountError
impl UnwindSafe for PendingCountError
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<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§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>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§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.§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.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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