pub enum SentinelError {
Show 18 variants
Config {
message: String,
source: Option<Box<dyn Error + Send + Sync>>,
},
Upstream {
upstream: String,
message: String,
retryable: bool,
source: Option<Box<dyn Error + Send + Sync>>,
},
Agent {
agent: String,
message: String,
event: String,
source: Option<Box<dyn Error + Send + Sync>>,
},
RequestValidation {
reason: String,
correlation_id: Option<String>,
},
ResponseValidation {
reason: String,
correlation_id: Option<String>,
},
LimitExceeded {
limit_type: LimitType,
message: String,
current_value: usize,
limit: usize,
},
Timeout {
operation: String,
duration_ms: u64,
correlation_id: Option<String>,
},
CircuitBreakerOpen {
component: String,
consecutive_failures: u32,
last_error: String,
},
WafBlocked {
reason: String,
rule_ids: Vec<String>,
confidence: f32,
correlation_id: String,
},
AuthenticationFailed {
reason: String,
correlation_id: Option<String>,
},
AuthorizationFailed {
reason: String,
correlation_id: Option<String>,
required_permissions: Vec<String>,
},
Tls {
message: String,
source: Option<Box<dyn Error + Send + Sync>>,
},
Internal {
message: String,
correlation_id: Option<String>,
source: Option<Box<dyn Error + Send + Sync>>,
},
Io {
message: String,
path: Option<String>,
source: Error,
},
Parse {
message: String,
input: Option<String>,
source: Option<Box<dyn Error + Send + Sync>>,
},
ServiceUnavailable {
service: String,
retry_after_seconds: Option<u32>,
},
RateLimit {
message: String,
limit: u32,
window_seconds: u32,
retry_after_seconds: Option<u32>,
},
NoHealthyUpstream,
}Expand description
Main error type for Sentinel operations
Variants§
Config
Configuration errors
Upstream
Upstream connection errors
Fields
Agent
Agent communication errors
RequestValidation
Request validation errors
ResponseValidation
Response validation errors
LimitExceeded
Limit exceeded errors
Timeout
Timeout errors
CircuitBreakerOpen
Circuit breaker errors
WafBlocked
WAF block errors
AuthenticationFailed
Authentication/Authorization errors
AuthorizationFailed
Tls
TLS/Certificate errors
Internal
Internal errors
Io
IO errors
Parse
Parsing errors
Service unavailable (for graceful degradation)
RateLimit
Rate limit errors
NoHealthyUpstream
No healthy upstream available
Implementations§
Source§impl SentinelError
impl SentinelError
Sourcepub fn is_circuit_breaker_eligible(&self) -> bool
pub fn is_circuit_breaker_eligible(&self) -> bool
Determine if this error should trigger a circuit breaker
Sourcepub fn is_retryable(&self) -> bool
pub fn is_retryable(&self) -> bool
Determine if this error is retryable
Sourcepub fn to_http_status(&self) -> u16
pub fn to_http_status(&self) -> u16
Get the HTTP status code for this error
Sourcepub fn client_message(&self) -> String
pub fn client_message(&self) -> String
Get a client-safe error message (without internal details)
Sourcepub fn upstream(upstream: impl Into<String>, message: impl Into<String>) -> Self
pub fn upstream(upstream: impl Into<String>, message: impl Into<String>) -> Self
Create an upstream error
Sourcepub fn upstream_retryable(
upstream: impl Into<String>,
message: impl Into<String>,
) -> Self
pub fn upstream_retryable( upstream: impl Into<String>, message: impl Into<String>, ) -> Self
Create a retryable upstream error
Sourcepub fn limit_exceeded(
limit_type: LimitType,
current_value: usize,
limit: usize,
) -> Self
pub fn limit_exceeded( limit_type: LimitType, current_value: usize, limit: usize, ) -> Self
Create a limit exceeded error
Sourcepub fn with_correlation_id(self, correlation_id: impl Into<String>) -> Self
pub fn with_correlation_id(self, correlation_id: impl Into<String>) -> Self
Add correlation ID to the error
Trait Implementations§
Source§impl Debug for SentinelError
impl Debug for SentinelError
Source§impl Display for SentinelError
impl Display for SentinelError
Source§impl Error for SentinelError
impl Error for SentinelError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
Auto Trait Implementations§
impl Freeze for SentinelError
impl !RefUnwindSafe for SentinelError
impl Send for SentinelError
impl Sync for SentinelError
impl Unpin for SentinelError
impl !UnwindSafe for SentinelError
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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