Skip to main content

PostgresInboxError

Enum PostgresInboxError 

Source
#[non_exhaustive]
pub enum PostgresInboxError { UnsupportedServerVersion { required: u32, detected: u32, }, NotMigrated { schema: String, }, SchemaNotOnSearchPath { configured: String, observed: String, }, NotClaimed { scope: String, message_id: MessageId, }, InvalidSettings { message: String, }, Database { source: Error, }, }
Expand description

A failure of a crate::PostgresInboxStore call (inbox contract §3). Deliberately smaller than crate::PostgresOutboxError: the inbox has no enqueue/acquire analog, so it needs no Decode/UnknownMetadataVersion/DuplicateMessage variant, and no InvalidSchema — every schema value this type ever sees already passed the same identifier validation at migrate() (the inbox shares the outbox’s schema and its single migrate() entry point, inbox contract §1), and claim/complete bind it only as set_config data, never interpolate it into DDL.

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.
§

UnsupportedServerVersion

The connected server’s server_version_num is below crate::MIN_SERVER_VERSION_NUM (ADR 0041). Checked at crate::PostgresInboxStore::connect, before the search_path verification below — the same ordering crate::PostgresOutboxError::UnsupportedServerVersion uses and for the same reason. Permanent.

Fields

§required: u32

crate::MIN_SERVER_VERSION_NUM, restated on the value.

§detected: u32

The server_version_num this connection reported.

§

NotMigrated

inbox resolved to the configured schema, but the relation itself is missing — migrate() has not been run. Permanent. Checked before Self::SchemaNotOnSearchPath below at crate::PostgresInboxStore::connect, exactly as crate::PostgresOutboxError::NotMigrated is checked before crate::PostgresOutboxError::SchemaNotOnSearchPath — a missing relation reported as a search_path problem would send an operator chasing the wrong fix.

Fields

§schema: String

The configured schema.

§

SchemaNotOnSearchPath

The unqualified name inbox does not resolve to the configured schema and the relation exists somewhere reachable — search_path puts a different schema first. Carries the configured schema and the observed search_path; the ALTER ROLE remedy is in the Display text. Permanent.

Fields

§configured: String
§observed: String

The search_path Postgres reported at construction.

§

NotClaimed

crate::PostgresInboxStore’s InboxStore::complete matched zero rows — reachable only by misuse (completing without a preceding Claimed claim, after the claiming transaction aborted, or completing a row that has since gone dead — complete’s own guard is completed_at IS NULL AND dead_at IS NULL, ADR 0042 A.2.4). Permanent — retrying the same call changes nothing.

Fields

§scope: String

The scope the caller completed under.

§message_id: MessageId

The message id the caller tried to complete.

§

InvalidSettings

PostgresInboxSettings::validate rejected the settings — currently only max_attempts == 0 (ADR 0042 A.2.4). Checked at crate::PostgresInboxStore::connect, before any query runs. Permanent.

Fields

§message: String

A payload-free description of what was rejected.

§

Database

Any other sqlx failure, classified by SQLSTATE exactly as crate::PostgresOutboxError::Database.

Fields

§source: Error

The underlying sqlx error.

Trait Implementations§

Source§

impl Classify for PostgresInboxError

Per-variant classification table, exactly as crate::PostgresOutboxError’s: no blanket “everything else is transient”.

Source§

fn kind(&self) -> FailureKind

Whether the failure this error represents can succeed on retry. Read more
Source§

impl Debug for PostgresInboxError

Source§

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

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

impl Display for PostgresInboxError

Source§

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

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

impl Error for PostgresInboxError

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 PostgresInboxError

Source§

fn from(source: Error) -> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
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 = !

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

fn try_from(value: U) -> Result<T, !>

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