Simple circuit breaker protecting against Adyen API outages.
States: :closed (normal) → :open (blocking) → :half_open (probing)
Opens after failure_threshold consecutive failures.
Moves to :half_open after reset_timeout_ms.
Closes after one successful request in :half_open.
Summary
Functions
Returns :ok if request may proceed, {:error, :circuit_open} if blocked.
Returns a specification to start this module under a supervisor.
Record a failed request.
Current circuit state.
Record a successful request.
Functions
@spec allow?() :: :ok | {:error, :circuit_open}
Returns :ok if request may proceed, {:error, :circuit_open} if blocked.
Returns a specification to start this module under a supervisor.
See Supervisor.
@spec failure() :: :ok
Record a failed request.
@spec state() :: :closed | :open | :half_open
Current circuit state.
@spec success() :: :ok
Record a successful request.