pub enum GroupMessageProcessingError {
Show 47 variants
IntentAlreadyProcessed,
MessageAlreadyProcessed(MessageIdentifier),
MessageIdentifierNotFound,
WelcomeAlreadyProcessed(u64),
InvalidSender {
message_time_ns: u64,
credential: Vec<u8>,
},
InvalidPayload,
IncomingHeadChanged,
CorruptIncomingEnvelope(DecodeError),
UnsupportedMlsVersion,
LostProposalState,
Envelope(EnvelopeError),
OwnMessageWithoutAttempt,
UnsupportedOwnIntentKind(String),
PreparedAttempt(Box<GroupError>),
RejectedIntent(&'static str),
Storage(StorageError),
Identity(IdentityError),
OpenMlsProcessMessage(ProcessMessageError<SqlKeyStoreError>),
OpenMlsProcessMessageWithAppData(ProcessMessageWithAppDataError<SqlKeyStoreError>),
MergeStagedCommit(MergeCommitError<SqlKeyStoreError>),
TlsError(Error),
UnsupportedMessageType(Discriminant<ProtocolMessage>),
UnexpectedProcessedContent(&'static str),
CommitValidation(CommitValidationError),
EpochIncrementNotAllowed,
ClearPendingCommit(SqlKeyStoreError),
Serde(Error),
IntentMissingStagedCommit,
EncodeProto(EncodeError),
DecodeProto(DecodeError),
Intent(IntentError),
Codec(CodecError),
WrongCredentialType(BasicCredentialError),
ProcessIntent(ProcessIntentError),
AssociationDeserialization(DeserializationError),
Client(ClientError),
GroupPaused,
GroupInactive,
OldEpoch(u64, u64),
FutureEpoch(u64, u64),
Db(ConnectionError),
Builder(UninitializedFieldError),
Diesel(Error),
EnrichMessage(EnrichMessageError),
PreCommitProposalPhaseComplete,
Conversion(ConversionError),
EpochAuthenticatorNotAdvanced {
group_id: GroupId,
commit_sequence_id: i64,
epoch: u64,
},
}Variants§
IntentAlreadyProcessed
MessageAlreadyProcessed(MessageIdentifier)
MessageIdentifierNotFound
WelcomeAlreadyProcessed(u64)
InvalidSender
InvalidPayload
IncomingHeadChanged
The received prefix changed before this attempt acquired the writer.
CorruptIncomingEnvelope(DecodeError)
The local pending record cannot be decoded. Processing must stop.
UnsupportedMlsVersion
The MLS wire version is not supported. Keep this envelope pending.
LostProposalState
A commit names a proposal the ordered prefix delivered, but the local proposal store no longer holds it. This is lost local state, not evidence that the commit is invalid, so the head is held.
Envelope(EnvelopeError)
Supported envelope framing fails validation after its complete prefix.
OwnMessageWithoutAttempt
Own ciphertext has no durable prepared attempt.
UnsupportedOwnIntentKind(String)
Our own echo names an intent whose kind a newer build wrote and this one cannot decode.
This holds the head rather than rejecting it. The envelope may be a commit every other member applied; skipping it would leave this installation behind the group with no way back. It is also not an external message — treating it as one would validate a commit we authored against external-actor rules. Not retryable, so the head is marked blocked and reconsidered once a build that can read the kind runs again.
PreparedAttempt(Box<GroupError>)
A local prepared attempt cannot safely explain this own envelope.
RejectedIntent(&'static str)
A stored terminal rejection whose original parameters were not retained.
Storage(StorageError)
Identity(IdentityError)
OpenMlsProcessMessage(ProcessMessageError<SqlKeyStoreError>)
OpenMlsProcessMessageWithAppData(ProcessMessageWithAppDataError<SqlKeyStoreError>)
AppDataUpdate-aware processing wrapper error.
Wraps the same ProcessMessageError as the variant above, plus the
ComponentSourceError that fires when an incoming AppDataUpdate
payload can’t be decoded under our wire format. Kept distinct from
OpenMlsProcessMessage so the AppData-decode failure mode is
greppable in logs.
MergeStagedCommit(MergeCommitError<SqlKeyStoreError>)
TlsError(Error)
UnsupportedMessageType(Discriminant<ProtocolMessage>)
UnexpectedProcessedContent(&'static str)
Processed-message content that cannot legitimately reach the apply
phase: UnresolvedAppDataCommit is always resolved inside
process_message_with_app_data, and OwnPendingCommit is only
produced for public-framed commits, which libxmtp’s
pure-ciphertext wire format policy never emits.
CommitValidation(CommitValidationError)
EpochIncrementNotAllowed
ClearPendingCommit(SqlKeyStoreError)
Serde(Error)
IntentMissingStagedCommit
EncodeProto(EncodeError)
DecodeProto(DecodeError)
Intent(IntentError)
Codec(CodecError)
WrongCredentialType(BasicCredentialError)
ProcessIntent(ProcessIntentError)
AssociationDeserialization(DeserializationError)
Client(ClientError)
GroupPaused
GroupInactive
Processing stops at the removal commit until a valid rejoin Welcome.
OldEpoch(u64, u64)
FutureEpoch(u64, u64)
Db(ConnectionError)
Builder(UninitializedFieldError)
Diesel(Error)
EnrichMessage(EnrichMessageError)
PreCommitProposalPhaseComplete
Conversion(ConversionError)
EpochAuthenticatorNotAdvanced
A successful staged-commit merge by a member that remains in the group must advance the epoch and therefore change the epoch authenticator. If it did not, the group state the commit was merged onto was corrupt/torn (e.g. produced by a cross-process race on a shared MLS DB). Retryable: the enclosing transaction (cursor + merge + commit log) rolls back and the message is reprocessed against settled state.
Trait Implementations§
Source§impl Debug for GroupMessageProcessingError
impl Debug for GroupMessageProcessingError
Source§impl Error for GroupMessageProcessingError
impl Error for GroupMessageProcessingError
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<BasicCredentialError> for GroupMessageProcessingError
impl From<BasicCredentialError> for GroupMessageProcessingError
Source§impl From<ClientError> for GroupMessageProcessingError
impl From<ClientError> for GroupMessageProcessingError
Source§fn from(source: ClientError) -> Self
fn from(source: ClientError) -> Self
Source§impl From<CodecError> for GroupMessageProcessingError
impl From<CodecError> for GroupMessageProcessingError
Source§fn from(source: CodecError) -> Self
fn from(source: CodecError) -> Self
Source§impl From<CommitRuleError> for GroupMessageProcessingError
impl From<CommitRuleError> for GroupMessageProcessingError
Source§fn from(error: CommitRuleError) -> Self
fn from(error: CommitRuleError) -> Self
Source§impl From<CommitValidationError> for GroupMessageProcessingError
impl From<CommitValidationError> for GroupMessageProcessingError
Source§fn from(source: CommitValidationError) -> Self
fn from(source: CommitValidationError) -> Self
Source§impl From<ConnectionError> for GroupMessageProcessingError
impl From<ConnectionError> for GroupMessageProcessingError
Source§impl From<ConversionError> for GroupMessageProcessingError
impl From<ConversionError> for GroupMessageProcessingError
Source§fn from(source: ConversionError) -> Self
fn from(source: ConversionError) -> Self
Source§impl From<DecodeError> for GroupMessageProcessingError
impl From<DecodeError> for GroupMessageProcessingError
Source§fn from(source: DecodeError) -> Self
fn from(source: DecodeError) -> Self
Source§impl From<DeserializationError> for GroupMessageProcessingError
impl From<DeserializationError> for GroupMessageProcessingError
Source§fn from(source: DeserializationError) -> Self
fn from(source: DeserializationError) -> Self
Source§impl From<EncodeError> for GroupMessageProcessingError
impl From<EncodeError> for GroupMessageProcessingError
Source§fn from(source: EncodeError) -> Self
fn from(source: EncodeError) -> Self
Source§impl From<EnrichMessageError> for GroupMessageProcessingError
impl From<EnrichMessageError> for GroupMessageProcessingError
Source§fn from(source: EnrichMessageError) -> Self
fn from(source: EnrichMessageError) -> Self
Source§impl From<Error> for GroupMessageProcessingError
impl From<Error> for GroupMessageProcessingError
Source§impl From<Error> for GroupMessageProcessingError
impl From<Error> for GroupMessageProcessingError
Source§impl From<Error> for GroupMessageProcessingError
impl From<Error> for GroupMessageProcessingError
Source§impl From<GroupMessageProcessingError> for GroupError
impl From<GroupMessageProcessingError> for GroupError
Source§fn from(source: GroupMessageProcessingError) -> Self
fn from(source: GroupMessageProcessingError) -> Self
Source§impl From<GroupMessageProcessingError> for IncomingError
impl From<GroupMessageProcessingError> for IncomingError
Source§fn from(source: GroupMessageProcessingError) -> Self
fn from(source: GroupMessageProcessingError) -> Self
Source§impl From<GroupMessageProcessingError> for SubscribeError
impl From<GroupMessageProcessingError> for SubscribeError
Source§fn from(value: GroupMessageProcessingError) -> Self
fn from(value: GroupMessageProcessingError) -> Self
Source§impl From<IdentityError> for GroupMessageProcessingError
impl From<IdentityError> for GroupMessageProcessingError
Source§fn from(source: IdentityError) -> Self
fn from(source: IdentityError) -> Self
Source§impl From<IntentError> for GroupMessageProcessingError
impl From<IntentError> for GroupMessageProcessingError
Source§fn from(source: IntentError) -> Self
fn from(source: IntentError) -> Self
Source§impl From<MergeCommitError<SqlKeyStoreError>> for GroupMessageProcessingError
impl From<MergeCommitError<SqlKeyStoreError>> for GroupMessageProcessingError
Source§impl From<ProcessMessageError<SqlKeyStoreError>> for GroupMessageProcessingError
impl From<ProcessMessageError<SqlKeyStoreError>> for GroupMessageProcessingError
Source§impl From<ProcessMessageWithAppDataError<SqlKeyStoreError>> for GroupMessageProcessingError
impl From<ProcessMessageWithAppDataError<SqlKeyStoreError>> for GroupMessageProcessingError
Source§fn from(source: ProcessMessageWithAppDataError<SqlKeyStoreError>) -> Self
fn from(source: ProcessMessageWithAppDataError<SqlKeyStoreError>) -> Self
Source§impl From<SqlKeyStoreError> for GroupMessageProcessingError
impl From<SqlKeyStoreError> for GroupMessageProcessingError
Source§impl From<StorageError> for GroupMessageProcessingError
impl From<StorageError> for GroupMessageProcessingError
Source§impl From<UninitializedFieldError> for GroupMessageProcessingError
impl From<UninitializedFieldError> for GroupMessageProcessingError
Source§impl NeedsDbReconnect for GroupMessageProcessingError
impl NeedsDbReconnect for GroupMessageProcessingError
fn needs_db_reconnect(&self) -> bool
Source§impl RetryableError for GroupMessageProcessingError
impl RetryableError for GroupMessageProcessingError
fn is_retryable(&self) -> bool
Auto Trait Implementations§
impl Freeze for GroupMessageProcessingError
impl !RefUnwindSafe for GroupMessageProcessingError
impl Send for GroupMessageProcessingError
impl Sync for GroupMessageProcessingError
impl Unpin for GroupMessageProcessingError
impl UnsafeUnpin for GroupMessageProcessingError
impl !UnwindSafe for GroupMessageProcessingError
Blanket Implementations§
§impl<T> AggregateExpressionMethods for T
impl<T> AggregateExpressionMethods for T
§fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
fn aggregate_distinct(self) -> Self::Outputwhere
Self: DistinctDsl,
DISTINCT modifier for aggregate functions Read more§fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
fn aggregate_all(self) -> Self::Outputwhere
Self: AllDsl,
ALL modifier for aggregate functions Read more§fn aggregate_filter<P>(self, f: P) -> Self::Outputwhere
P: AsExpression<Bool>,
Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,
fn aggregate_filter<P>(self, f: P) -> Self::Outputwhere
P: AsExpression<Bool>,
Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,
§fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
fn aggregate_order<O>(self, o: O) -> Self::Outputwhere
Self: OrderAggregateDsl<O>,
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<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<T> IntoSql for T
impl<T> IntoSql for T
§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].Source§impl<TraitVariantBlanketType> LocalNeedsDbReconnect for TraitVariantBlanketTypewhere
TraitVariantBlanketType: NeedsDbReconnect,
impl<TraitVariantBlanketType> LocalNeedsDbReconnect for TraitVariantBlanketTypewhere
TraitVariantBlanketType: NeedsDbReconnect,
fn needs_db_reconnect(&self) -> bool
§impl<D> OwoColorize for D
impl<D> OwoColorize for D
§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg] or
a color-specific method, such as [OwoColorize::green], Read more§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg] or
a color-specific method, such as [OwoColorize::on_yellow], Read more