Skip to main content

ProtocolErrorKind

Enum ProtocolErrorKind 

Source
#[non_exhaustive]
pub enum ProtocolErrorKind { TruncatedFrame, CrcMismatch, UnknownApiVersion, InvalidLength, InvalidUtf8, UnsupportedMagic, InvalidValue, Malformed, Other, }
Expand description

Structured classification of KrafkaError::Protocol errors.

The Kafka wire protocol surfaces many distinct failure modes (truncated frames, CRC mismatches, version negotiation failures, oversized arrays, etc.) that callers may want to distinguish without substring-matching the error message. ProtocolErrorKind exposes the classification as a typed enum while keeping the human-readable detail on the accompanying message.

Kinds are coarse on purpose — they reflect retry/fail decisions rather than every possible broker-returned condition. Retriability is exposed via ProtocolErrorKind::is_retriable.

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

TruncatedFrame

Buffer exhausted before a complete frame, field, or record could be read.

Usually indicates a short read on the wire or a truncated response body. Retriable: the request may succeed on a fresh connection.

§

CrcMismatch

Record batch CRC32C did not match the computed checksum.

Indicates on-wire corruption. Retriable.

§

UnknownApiVersion

No mutually supported API version, or the broker does not advertise the required API at all.

Not retriable — reflects a permanent client/broker version mismatch.

§

InvalidLength

An encoded length exceeds the protocol maximum (i32::MAX, u32::MAX, i16::MAX for KafkaString, etc.) or the configured safety cap (MAX_DECODE_ARRAY_LEN, MAX_RECORD_HEADERS).

Not retriable — indicates a malformed response or a misconfigured cap.

§

InvalidUtf8

Bytes decoded as a UTF-8 string were not valid UTF-8.

Not retriable.

§

UnsupportedMagic

Record batch magic byte is not a supported version (only 2 is accepted today).

Not retriable.

§

InvalidValue

A field value was outside its allowed range or encoded incorrectly (negative record count, bad enum discriminant, unknown header version, malformed varint, etc.).

Not retriable.

§

Malformed

The response was structurally malformed in a way that does not fit the other variants (unexpected partition in a response, missing required field, etc.).

Retriable — often transient and resolves after a metadata refresh or reconnection.

§

Other

Catch-all for protocol errors not otherwise classified.

Not retriable by default; callers should inspect the message.

Implementations§

Source§

impl ProtocolErrorKind

Source

pub fn is_retriable(self) -> bool

Returns true if this protocol error kind is typically transient and safe to retry after a reconnect or metadata refresh.

Trait Implementations§

Source§

impl Clone for ProtocolErrorKind

Source§

fn clone(&self) -> ProtocolErrorKind

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ProtocolErrorKind

Source§

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

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

impl Hash for ProtocolErrorKind

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ProtocolErrorKind

Source§

fn eq(&self, other: &ProtocolErrorKind) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for ProtocolErrorKind

Source§

impl Eq for ProtocolErrorKind

Source§

impl StructuralPartialEq for ProtocolErrorKind

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> AsOut<T> for T
where T: Copy,

Source§

fn as_out(&mut self) -> Out<'_, T>

Returns an out reference to self.
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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: 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: 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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