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>,
) -> SentinelError
pub fn upstream( upstream: impl Into<String>, message: impl Into<String>, ) -> SentinelError
Create an upstream error
Sourcepub fn upstream_retryable(
upstream: impl Into<String>,
message: impl Into<String>,
) -> SentinelError
pub fn upstream_retryable( upstream: impl Into<String>, message: impl Into<String>, ) -> SentinelError
Create a retryable upstream error
Sourcepub fn timeout(operation: impl Into<String>, duration_ms: u64) -> SentinelError
pub fn timeout(operation: impl Into<String>, duration_ms: u64) -> SentinelError
Create a timeout error
Sourcepub fn limit_exceeded(
limit_type: LimitType,
current_value: usize,
limit: usize,
) -> SentinelError
pub fn limit_exceeded( limit_type: LimitType, current_value: usize, limit: usize, ) -> SentinelError
Create a limit exceeded error
Sourcepub fn with_correlation_id(
self,
correlation_id: impl Into<String>,
) -> SentinelError
pub fn with_correlation_id( self, correlation_id: impl Into<String>, ) -> SentinelError
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)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
Source§impl From<Error> for SentinelError
Helper for converting IO errors
impl From<Error> for SentinelError
Helper for converting IO errors
Source§fn from(err: Error) -> SentinelError
fn from(err: Error) -> SentinelError
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
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§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 moreSource§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