#[non_exhaustive]pub enum RedisError {
Connect(Box<dyn StdError + Send + Sync>),
Publish(Box<dyn StdError + Send + Sync>),
Subscribe(Box<dyn StdError + Send + Sync>),
Stream(Box<dyn StdError + Send + Sync>),
ShutDown,
TransactionBusy,
NoTransaction,
InvalidOptions(String),
ServerTooOld(String),
Flush(String),
}Expand description
Errors surfaced by the Redis broker implementation.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Connect(Box<dyn StdError + Send + Sync>)
Failed to establish or use the underlying fred connection.
Publish(Box<dyn StdError + Send + Sync>)
Failed to publish (XADD) a message to a stream.
Subscribe(Box<dyn StdError + Send + Sync>)
Failed to open a subscription (consumer-group creation or the first read).
Stream(Box<dyn StdError + Send + Sync>)
A stream read (XREADGROUP / XAUTOCLAIM) or acknowledgement (XACK) failed.
ShutDown
The operation ran through a handle aliasing a connection that was already shut down
(ConnectedBroker::shutdown).
The lifecycle ladder makes misuse by the owner of the connected broker a compile error; publishers handed out before the shutdown outlive it, so their operations report this instead of running against a dead pool.
TransactionBusy
begin_transaction was called while a transaction is already open on this publisher handle.
NoTransaction
commit or abort was called with no open transaction on this publisher handle.
InvalidOptions(String)
The supplied subscription descriptor combines fields in a way the broker cannot honour
(for example a RedisStream with no consumer group, or a bare-string
subscription with no broker-wide default group).
ServerTooOld(String)
The connected server is older than the subscription’s read mode needs.
RedisStream::claiming issues XREADGROUP ... CLAIM,
which Redis 8.4.0 added. The check runs where the subscription resolves against the
connected broker, once and before the first read, so the service fails at startup with
both versions named instead of meeting a syntax error on its first message.
The message is the whole error: it already names the subscription, the mode and the two versions, and a prefix would only repeat them.
Flush(String)
A window of a .pipeline() subscription failed to send what it owed.
Reported once, on the subscription’s delivery stream, and the message names the subscription, how many commands the flush carried and how many failed. On the forms that settle, the entries whose settles failed stay pending and are delivered again.
Trait Implementations§
Source§impl Debug for RedisError
impl Debug for RedisError
Source§impl Display for RedisError
impl Display for RedisError
Source§impl Error for RedisError
impl Error for RedisError
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()
Auto Trait Implementations§
impl !RefUnwindSafe for RedisError
impl !UnwindSafe for RedisError
impl Freeze for RedisError
impl Send for RedisError
impl Sync for RedisError
impl Unpin for RedisError
impl UnsafeUnpin for RedisError
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> 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