#[non_exhaustive]pub enum TransactionalProjectionError {
Show 13 variants
LeadershipBusy,
LeadershipLost {
source: BoxedProjectionError,
},
Source {
source: BoxedProjectionError,
},
Decode {
position: DeliveryPosition,
source: BoxedProjectionError,
},
Application {
position: DeliveryPosition,
source: BoxedProjectionError,
},
RetryExhausted {
position: DeliveryPosition,
attempts: u32,
source: BoxedProjectionError,
},
Progress {
position: DeliveryPosition,
source: BoxedProjectionError,
},
ProgressStore {
source: BoxedProjectionError,
},
CommitIndeterminate {
position: DeliveryPosition,
source: BoxedProjectionError,
},
SourceIdentityMismatch {
projector: ProjectorName,
persisted: DeliverySourceId,
configured: DeliverySourceId,
},
SelectionIdentityMismatch {
projector: ProjectorName,
persisted: ProjectionSelectionId,
configured: ProjectionSelectionId,
},
Configuration {
source: ProjectionConfigurationError,
},
AfterCommitFailed {
committed_position: DeliveryPosition,
source: BoxedProjectionError,
},
}Expand description
Terminal failures from a transactional projection run.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
LeadershipBusy
Another process owns this projector’s read-model leadership lock.
LeadershipLost
The leader session was lost and can no longer authorize writes.
Fields
source: BoxedProjectionErrorUnderlying database error.
Source
The event source could not provide a page or high-water mark.
Fields
source: BoxedProjectionErrorUnderlying source error.
Decode
A selected persisted payload could not decode into the application’s event contract.
Fields
position: DeliveryPositionPosition of the malformed selected envelope.
source: BoxedProjectionErrorUnderlying deserialization error.
Application
The projector chose the Fatal decision for an application error.
Fields
position: DeliveryPositionFailed position.
source: BoxedProjectionErrorUnderlying application error.
RetryExhausted
Retry attempts were exhausted without committing the event effect.
Fields
position: DeliveryPositionFailed position.
source: BoxedProjectionErrorLast application error.
Progress
Progress could not be loaded or advanced for the pending delivery position.
Fields
position: DeliveryPositionDelivery position whose transaction remains pending.
source: BoxedProjectionErrorUnderlying database error.
ProgressStore
A progress storage operation without a pending delivery position failed.
Fields
source: BoxedProjectionErrorUnderlying database error.
CommitIndeterminate
PostgreSQL did not acknowledge the commit, so durable state must be inspected on recovery.
Fields
position: DeliveryPositionPosition whose transaction may or may not have committed.
source: BoxedProjectionErrorUnderlying database error.
SourceIdentityMismatch
Existing progress belongs to a different delivery source.
Fields
projector: ProjectorNameProjector whose durable identity was incompatible.
persisted: DeliverySourceIdSource identity persisted with durable progress.
configured: DeliverySourceIdSource identity configured for this invocation.
SelectionIdentityMismatch
Existing progress belongs to a different projection selection.
Fields
projector: ProjectorNameProjector whose durable identity was incompatible.
persisted: ProjectionSelectionIdSelection identity persisted with durable progress.
configured: ProjectionSelectionIdSelection identity configured for this invocation.
Configuration
Configuration cannot safely start a projection.
Fields
source: ProjectionConfigurationErrorInvalid configuration detail.
AfterCommitFailed
A confirmed commit succeeded but its after-commit action failed.
Fields
committed_position: DeliveryPositionAlready committed position.
source: BoxedProjectionErrorUnderlying hook error.
Trait Implementations§
Source§impl Debug for TransactionalProjectionError
impl Debug for TransactionalProjectionError
Source§impl Error for TransactionalProjectionError
impl Error for TransactionalProjectionError
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()
Auto Trait Implementations§
impl !RefUnwindSafe for TransactionalProjectionError
impl !UnwindSafe for TransactionalProjectionError
impl Freeze for TransactionalProjectionError
impl Send for TransactionalProjectionError
impl Sync for TransactionalProjectionError
impl Unpin for TransactionalProjectionError
impl UnsafeUnpin for TransactionalProjectionError
Blanket Implementations§
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> 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