Spaces:
Runtime error
Runtime error
//! This module provides the error enum to handle different errors associated while requesting data from | |
//! the redis server using an async connection pool. | |
use std::fmt; | |
use redis::RedisError; | |
/// A custom error type used for handling redis async pool associated errors. | |
/// | |
/// This enum provides variants three different categories of errors: | |
/// * `RedisError` - This variant handles all errors related to `RedisError`, | |
/// * `PoolExhaustionWithConnectionDropError` - This variant handles the error | |
/// which occurs when all the connections in the connection pool return a connection | |
/// dropped redis error. | |
pub enum PoolError { | |
RedisError(RedisError), | |
PoolExhaustionWithConnectionDropError, | |
} | |
impl fmt::Display for PoolError { | |
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | |
match self { | |
PoolError::RedisError(redis_error) => { | |
if let Some(detail) = redis_error.detail() { | |
write!(f, "{}", detail) | |
} else { | |
write!(f, "") | |
} | |
} | |
PoolError::PoolExhaustionWithConnectionDropError => { | |
write!( | |
f, | |
"Error all connections from the pool dropped with connection error" | |
) | |
} | |
} | |
} | |
} | |
impl error_stack::Context for PoolError {} | |