pub struct CircuitBreaker { /* private fields */ }Expand description
Tokens-per-window circuit breaker.
Every failed request consumes one token from a fixed budget. When the budget hits zero, the breaker trips and rejects requests without touching the network until the window elapses. On window rollover, the budget refills.
This model matches the AWS-style “sliding-window” limiter used by Envoy and many production OTLP collectors: cheap to compute, no per-request coordination, and cleanly recovers after a failure storm.
Implementations§
Source§impl CircuitBreaker
impl CircuitBreaker
Sourcepub fn new(budget: u32, window: Duration) -> Self
pub fn new(budget: u32, window: Duration) -> Self
New breaker with the given failure budget per window.
Sourcepub fn allow(&self) -> bool
pub fn allow(&self) -> bool
Should the caller attempt this request?
Returns true if the breaker is closed (tokens available or
window has rolled over) and false if the breaker is tripped
for the current window.
Sourcepub fn record_failure(&self)
pub fn record_failure(&self)
Report a failed request. Consumes one token if any are left.
Sourcepub fn record_success(&self)
pub fn record_success(&self)
Report a successful request. Optional but improves accuracy: a successful call restores the failure budget by one token, modelling the fact that the collector is healthy.