diff --git a/wavesexchange_repos/src/circuit_breaker/mod.rs b/wavesexchange_repos/src/circuit_breaker/mod.rs index 4ed0fad..947f0ca 100644 --- a/wavesexchange_repos/src/circuit_breaker/mod.rs +++ b/wavesexchange_repos/src/circuit_breaker/mod.rs @@ -1,10 +1,3 @@ -/* -послать запрос к удалённому ресурсу -если пришла ошибка соединения, то зафиксировать и вернуть ошибку в Result -если разрывы соединений продолжаются, выкинуть панику (или вызвать соотв обработчик) -разрывы соединений: - разные бд (pg, redis), разные пулы (bb8, deadpool, r2d2), одиночный запрос, возможность расширения -*/ pub mod config; pub mod error; @@ -25,7 +18,7 @@ pub trait SharedFn: Fn() -> S + Send + Sync + 'static {} impl SharedFn for T where T: Fn() -> S + Send + Sync + 'static {} pub struct CircuitBreaker { - max_timespan: Duration, // максимальный временной промежуток, в котором будут считаться ошибки + max_timespan: Duration, max_err_count_per_timespan: NonZeroUsize, init_fn: Box>, state: RwLock>, @@ -33,7 +26,7 @@ pub struct CircuitBreaker { pub struct CBState { data_source: Arc, - err_count: usize, // current errors count + err_count: usize, first_err_ts: Option, } @@ -110,7 +103,6 @@ impl CircuitBreaker { pub async fn query(&self, query_fn: F) -> Result where - //todo: figure out how to FnOnce(&S) F: FnOnce(Arc) -> Fut, Fut: Future>, {