pub enum ErrorDetails {
Infrastructure {
operation: String,
message: String,
retryable: bool,
},
Configuration {
kind: ConfigErrorKind,
resource: String,
message: Option<String>,
},
Application {
kind: AppErrorKind,
message: String,
retryable: bool,
},
Poison {
attempt_count: u32,
max_attempts: u32,
message_type: PoisonMessageType,
message: String,
},
}Expand description
Structured error details for orchestration failures.
Errors are categorized into three types for proper metrics and logging:
- Infrastructure: Provider failures, data corruption (abort turn, never reach user code)
- Configuration: Deployment issues like unregistered activities, nondeterminism (abort turn)
- Application: Business logic failures (flow through normal orchestration code)
Variants§
Infrastructure
Infrastructure failure (provider errors, data corruption). These errors abort orchestration execution and never reach user code.
Configuration
Configuration error (unregistered orchestrations/activities, nondeterminism). These errors abort orchestration execution and never reach user code.
Application
Application error (business logic failures). These are the ONLY errors that orchestration code sees.
Poison
Poison message error - message exceeded max fetch attempts.
This indicates a message that repeatedly fails to process. Could be caused by:
- Malformed message data causing deserialization failures
- Message triggering bugs that crash the worker
- Transient infrastructure issues that became permanent
- Application code bugs triggered by specific input patterns
Implementations§
Source§impl ErrorDetails
impl ErrorDetails
Sourcepub fn is_retryable(&self) -> bool
pub fn is_retryable(&self) -> bool
Check if failure is retryable.
Sourcepub fn display_message(&self) -> String
pub fn display_message(&self) -> String
Get display message for logging/UI (backward compatible format).
Trait Implementations§
Source§impl Clone for ErrorDetails
impl Clone for ErrorDetails
Source§fn clone(&self) -> ErrorDetails
fn clone(&self) -> ErrorDetails
Returns a duplicate of the value. Read more
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ErrorDetails
impl Debug for ErrorDetails
Source§impl<'de> Deserialize<'de> for ErrorDetails
impl<'de> Deserialize<'de> for ErrorDetails
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>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl PartialEq for ErrorDetails
impl PartialEq for ErrorDetails
Source§impl Serialize for ErrorDetails
impl Serialize for ErrorDetails
impl Eq for ErrorDetails
impl StructuralPartialEq for ErrorDetails
Auto Trait Implementations§
impl Freeze for ErrorDetails
impl RefUnwindSafe for ErrorDetails
impl Send for ErrorDetails
impl Sync for ErrorDetails
impl Unpin for ErrorDetails
impl UnwindSafe for ErrorDetails
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)