pub struct ErrorPayload {
pub code: String,
pub message: String,
pub ndb_code: u16,
pub details: Option<ErrorDetails>,
pub cause: Option<ErrorCausePayload>,
}Expand description
Error details in a response.
Encoded as a MessagePack map rather than an array so that fields can be
added without invalidating the frames older peers already understand —
the same reason NativeResponse is a map. An array representation has
no field names, so a decoder cannot tell a missing optional field from a
truncated frame and every addition is a breaking change.
Fields§
§code: StringSQLSTATE-style error code (e.g., “42P01” for undefined table).
message: StringHuman-readable error message.
ndb_code: u16Stable numeric NodeDB error code (nodedb_types::ErrorCode’s inner
value, e.g. 1000 for a constraint violation).
SQLSTATE is many-to-one — a unique violation and a duplicate
idempotency key both render as 23505, and everything unclassified
renders as XX000 — so it cannot carry the classification a client
needs to reconstruct a typed error. This field is the authoritative
one for that. 0 means the sending server predates this field, and a
client must fall back to a generic error rather than guess.
#[serde(default)] + #[msgpack(default)] keep it additive and
backward-compatible with peers that never send it.
details: Option<ErrorDetails>The structured details the server held: the collection, gate, or
document the error names. None when the server had none to send.
cause: Option<ErrorCausePayload>The typed error that caused this one, when the server held one: the
Data-Plane refusal behind a phase failure, say. None when there is
no cause to report.
Trait Implementations§
Source§impl Clone for ErrorPayload
impl Clone for ErrorPayload
Source§impl Debug for ErrorPayload
impl Debug for ErrorPayload
Source§impl<'de> Deserialize<'de> for ErrorPayload
impl<'de> Deserialize<'de> for ErrorPayload
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<'__msgpack_de> FromMessagePack<'__msgpack_de> for ErrorPayload
impl<'__msgpack_de> FromMessagePack<'__msgpack_de> for ErrorPayload
Source§impl Serialize for ErrorPayload
impl Serialize for ErrorPayload
Source§impl ToMessagePack for ErrorPayload
impl ToMessagePack for ErrorPayload
Source§fn write<W: Write>(&self, writer: &mut W) -> Result<(), Error>
fn write<W: Write>(&self, writer: &mut W) -> Result<(), Error>
Source§fn size_hint(&self) -> Option<TrustedSizeHint>
fn size_hint(&self) -> Option<TrustedSizeHint>
Self::write, or None when it cannot be determined cheaply. Read moreAuto Trait Implementations§
impl Freeze for ErrorPayload
impl RefUnwindSafe for ErrorPayload
impl Send for ErrorPayload
impl Sync for ErrorPayload
impl Unpin for ErrorPayload
impl UnsafeUnpin for ErrorPayload
impl UnwindSafe for ErrorPayload
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<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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<T> FromMessagePackOwned for Twhere
T: for<'a> FromMessagePack<'a>,
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.impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
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.