Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( ErrOpenState = gobreaker.ErrOpenState ErrTooManyRequests = gobreaker.ErrTooManyRequests )
Functions ¶
func IsErrorPermanent ¶
IsErrorPermanent returns true if `err` should be treated as a permanent error that cannot be retried.
Types ¶
type CircuitBreaker ¶
type CircuitBreaker struct { // Name is the circuit breaker name. Name string // The maximum number of requests allowed to pass through when // the circuit breaker is half-open. // Default is 1. MaxRequests uint32 `mapstructure:"maxRequests"` // The cyclic period of the closed state for the circuit breaker // to clear the internal counts. If 0, the circuit breaker doesn't // clear internal counts during the closed state. // Default is 0s. Interval time.Duration `mapstructure:"interval"` // The period of the open state, after which the state of the // circuit breaker becomes half-open. // Default is 60s. Timeout time.Duration `mapstructure:"timeout"` // Trip is a CEL expression evaluated with the circuit breaker's // internal counts whenever a request fails in the closed state. // If it evaluates to true, the circuit breaker will be placed // into the open state. // Default is consecutiveFailures > 5. Trip *expr.Expr `mapstructure:"trip"` // contains filtered or unexported fields }
CircuitBreaker represents the configuration for how a circuit breaker behaves.
func (*CircuitBreaker) Execute ¶
func (c *CircuitBreaker) Execute(oper func() (any, error)) (any, error)
Execute invokes `oper` if the circuit breaker is in a closed state or for an allowed call in the half-open state. It is a wrapper around the gobreaker library that is used here. The circuit breaker shorts if the connection is in open state or if there are too many requests in the half-open state. In both cases, the error returned is wrapped with ErrOpenState or ErrTooManyRequests defined in this package. The result of the operation in those scenarios will by nil/zero. In all other scenarios the result, error returned is the result, error returned by the operation.
func (*CircuitBreaker) Initialize ¶
func (c *CircuitBreaker) Initialize(log logger.Logger)
Initialize creates the underlying circuit breaker using the configuration fields.
func (*CircuitBreaker) State ¶ added in v1.11.0
func (c *CircuitBreaker) State() CircuitBreakerState
State returns the current state of the circuit breaker.
func (*CircuitBreaker) String ¶ added in v1.10.0
func (c *CircuitBreaker) String() string
String implements fmt.Stringer and is used for debugging.
type CircuitBreakerState ¶ added in v1.11.0
type CircuitBreakerState string
const ( StateClosed CircuitBreakerState = "closed" StateOpen CircuitBreakerState = "open" StateHalfOpen CircuitBreakerState = "half-open" StateUnknown CircuitBreakerState = "unknown" )