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" )