pub enum Error {
Core(Error),
Io(Error),
Connect {
addr: String,
source: Error,
},
Broker {
op: &'static str,
code: i16,
disposition: Disposition,
},
NoLeader {
topic: String,
partition: i32,
},
Producer(ProducerError),
Timeout {
op: ApiKey,
addr: String,
},
Sasl(String),
Missing(&'static str),
ConnectionBusy {
op: ApiKey,
addr: String,
in_flight: usize,
},
}Variants§
Core(Error)
Io(Error)
Connect
Broker
A broker error code, with what the client should do about it. Carrying
the Disposition means a caller can react without re-deriving the
taxonomy — and cannot accidentally retry something fatal.
NoLeader
The partition has no leader even after a metadata refresh — what a
partition mid-election looks like. Separate from Self::Broker so a
caller can back off and retry rather than treat it as fatal.
Producer(ProducerError)
A misuse of the producer, caught by the state machine rather than by a broker — producing outside a transaction, to an unenrolled partition, or after being fenced.
Timeout
A request outlived its deadline. The connection is dropped with it —
see Cluster::call_at.
Sasl(String)
Authentication failed, or the broker does not offer the mechanism.
Missing(&'static str)
ConnectionBusy
A request/response call was attempted on a connection that already has requests in flight.
This is a bug in this client, surfaced rather than suffered. Kafka
answers a connection’s requests in order, so a call on a busy
connection reads the previous request’s response — a fetch decoded as
an offset commit, or worse, a response that happens to parse. Anything
pipelining deliberately uses send/recv and manages the order itself;
anything else must leave the connection idle first.
Trait Implementations§
Source§impl Error for Error
impl Error for Error
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()