Skip to main content

ClientError

Enum ClientError 

Source
#[non_exhaustive]
pub enum ClientError { Transport(Error), Http { status: u16, body: String, request_id: Option<String>, }, Auth(String), Decode(Error), MalformedEvent(String), HistoryGap { reason: GapReason, }, StreamProtocol { message: String, request_id: Option<String>, }, Config(String), StateStore(StoreError), TriggerFailed { kind: TriggerKindLabel, source: TriggerError, }, }
Expand description

Errors returned by aviso client operations.

Variants are added as new features land. The enum is marked #[non_exhaustive] so downstream match arms must include a wildcard.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Transport(Error)

Network-level failure: connect, TLS, DNS, or partial body read.

§

Http

Server responded with a non-success HTTP status. Carries the verbatim response body and the server’s X-Request-ID header (if present).

Fields

§status: u16

HTTP status code from the response.

§body: String

Verbatim response body (may be empty).

§request_id: Option<String>

Server-supplied X-Request-ID header, when present.

§

Auth(String)

Authentication setup, token refresh, or auth source resolution failed.

§

Decode(Error)

Failed to decode a response body as JSON.

§

MalformedEvent(String)

CloudEvent envelope contained a malformed event id. Terminal per D9 to avoid reconnect livelock on a poisoned server stream.

§

HistoryGap

A gap was detected in the watch stream. The accompanying GapReason explains why.

This variant is surfaced on the watch stream when the supervisor detects either a non-consecutive sequence number on the wire or a server-emitted notification_replay_limit_reached signal. The watch terminates after this error because continuing past a known gap would silently violate at-least-once delivery.

Fields

§reason: GapReason

The kind of gap that was detected.

§

StreamProtocol

A wire-protocol-level fatal condition was observed on the watch stream.

Surfaced when the server emits an error SSE event, when a connection-closing frame carries an unrecognised reason, or when any other recognised-shape frame is fundamentally not implementable by this client. The message is taken verbatim from the server payload when one is provided. request_id carries the server-supplied correlation id when the payload includes one.

Distinct from ClientError::Http, which describes a non-success HTTP status on the initial response; StreamProtocol is for fatal frames that arrive over a stream that initially returned 200.

Fields

§message: String

Human-readable description from the server-side payload.

§request_id: Option<String>

Server-supplied X-Request-ID-equivalent value, when present.

§

Config(String)

Configuration-time error (invalid auth source, missing field, and so on).

§

StateStore(StoreError)

Persistent state-store operation failed during a watch session.

Surfaced when crate::state::StateStore::get or crate::state::StateStore::put returns an error while the watch supervisor is consulting or updating the durable resume cursor. The supervisor cannot continue at-least-once delivery without a working store, so this error is terminal: the stream yields None after it.

The #[from] impl preserves the underlying error chain (StoreError::Io, StoreError::Decode, and so on) so callers can classify the root cause via source() if they need to.

§

TriggerFailed

A required trigger failed after all configured retries.

Surfaced when a crate::watch::Trigger configured on a crate::watch::WatchRequest with required: true (the default) exhausts its retry budget. Terminal: the stream yields None after this error and the supervisor exits.

The committed checkpoint stays at the previous notification’s sequence (or remains unset if the failing trigger was on the very first notification of the session). On next process start the supervisor re-delivers the notification whose trigger failed.

kind names the trigger for diagnostics; source carries the underlying error (typically a crate::watch::TriggerError::Io).

Fields

§kind: TriggerKindLabel

Kind of trigger that failed (echo or log).

§source: TriggerError

Inner error from the trigger dispatcher.

Implementations§

Source§

impl ClientError

Source

pub fn request_id(&self) -> Option<&str>

Returns the server-supplied request-id correlation for variants that carry one, or None otherwise.

Currently this is ClientError::Http and ClientError::StreamProtocol; the other variants either represent client-side conditions (ClientError::Config, ClientError::Auth) or do not reliably carry a server identifier (ClientError::Transport, ClientError::Decode, ClientError::MalformedEvent, ClientError::HistoryGap).

Trait Implementations§

Source§

impl Debug for ClientError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for ClientError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for ClientError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<Error> for ClientError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ClientError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<StoreError> for ClientError

Source§

fn from(source: StoreError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more