pub enum MirrorError {
ClusterIdMismatch {
declared: String,
remote: String,
},
ObserverRoleViolation {
detail: String,
},
SnapshotOffsetRegression {
database_id: String,
expected: u64,
actual: u64,
},
SnapshotCrcMismatch {
database_id: String,
stored: u32,
computed: u32,
},
HandshakeCodec {
detail: String,
},
ProtocolVersionMismatch {
local: u16,
detail: String,
},
Transport {
detail: String,
},
BytesInFlightCapExceeded {
database_id: String,
in_flight: u64,
cap: u64,
},
MirrorPromoted {
database_id: String,
},
}Expand description
Errors produced by cross-cluster mirror operations.
These wrap into crate::error::ClusterError::Mirror at the public
boundary so callers have a single error type to handle.
Variants§
ClusterIdMismatch
The remote cluster refused our connection because the source_cluster
we declared does not match their own cluster id.
ObserverRoleViolation
The remote cluster rejected the mirror link because the connecting
peer presented Observer role credentials but tried to perform a
voter operation (vote request, conf change, etc.).
SnapshotOffsetRegression
Snapshot transfer was aborted because a chunk arrived out of order.
The receiver resets and requests a fresh snapshot from the source.
SnapshotCrcMismatch
Snapshot CRC validation failed at the final chunk.
HandshakeCodec
The cross-cluster handshake wire message could not be decoded.
ProtocolVersionMismatch
The mirror declared a wire protocol version the source does not implement (or vice versa). Surfaced immediately without retry — the peers must be upgraded in lockstep.
Transport
QUIC transport error during cross-cluster operations.
BytesInFlightCapExceeded
Observer-side bytes-in-flight cap was exceeded; the source should pause sending until the observer drains.
MirrorPromoted
The mirror is in Promoted state and can no longer accept replication.
Trait Implementations§
Source§impl Debug for MirrorError
impl Debug for MirrorError
Source§impl Display for MirrorError
impl Display for MirrorError
Source§impl Error for MirrorError
impl Error for MirrorError
1.30.0 · 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()
Source§impl From<MirrorError> for ClusterError
impl From<MirrorError> for ClusterError
Source§fn from(source: MirrorError) -> Self
fn from(source: MirrorError) -> Self
Auto Trait Implementations§
impl Freeze for MirrorError
impl RefUnwindSafe for MirrorError
impl Send for MirrorError
impl Sync for MirrorError
impl Unpin for MirrorError
impl UnsafeUnpin for MirrorError
impl UnwindSafe for MirrorError
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
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> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.