Documentation
¶
Index ¶
- Variables
- func DefaultRetryableErrors(err error) bool
- func ExponentialBackoff(ctx context.Context, maxRetries int, initialBackoff time.Duration, ...) error
- func LinearBackoff(ctx context.Context, maxRetries int, backoffDuration time.Duration, ...) error
- func Retry(ctx context.Context, config RetryConfig, fn RetryableFunc) error
- func RetryWithCircuitBreaker(ctx context.Context, retryConfig RetryConfig, circuitBreaker *CircuitBreaker, ...) error
- type CircuitBreaker
- func (cb *CircuitBreaker) Execute(ctx context.Context, fn func() error) error
- func (cb *CircuitBreaker) Failures() int
- func (cb *CircuitBreaker) Reset()
- func (cb *CircuitBreaker) State() CircuitBreakerState
- func (cb *CircuitBreaker) Stats() CircuitBreakerStats
- func (cb *CircuitBreaker) Successes() int
- func (cb *CircuitBreaker) TransitionToHalfOpen()
- type CircuitBreakerConfig
- type CircuitBreakerState
- type CircuitBreakerStats
- type RetryConfig
- type RetryStats
- type RetryableFunc
Constants ¶
This section is empty.
Variables ¶
Functions ¶
func DefaultRetryableErrors ¶
DefaultRetryableErrors determines if an error is retryable by default
func ExponentialBackoff ¶
func ExponentialBackoff(ctx context.Context, maxRetries int, initialBackoff time.Duration, fn RetryableFunc) error
ExponentialBackoff is a convenience function for exponential backoff retry
func LinearBackoff ¶
func LinearBackoff(ctx context.Context, maxRetries int, backoffDuration time.Duration, fn RetryableFunc) error
LinearBackoff is a convenience function for linear backoff retry
func Retry ¶
func Retry(ctx context.Context, config RetryConfig, fn RetryableFunc) error
Retry executes a function with retry logic
func RetryWithCircuitBreaker ¶
func RetryWithCircuitBreaker(ctx context.Context, retryConfig RetryConfig, circuitBreaker *CircuitBreaker, fn RetryableFunc) error
RetryWithCircuitBreaker combines retry logic with circuit breaker
Types ¶
type CircuitBreaker ¶
type CircuitBreaker struct {
// contains filtered or unexported fields
}
CircuitBreaker implements the circuit breaker pattern for fault tolerance
func NewCircuitBreaker ¶
func NewCircuitBreaker(config CircuitBreakerConfig) *CircuitBreaker
NewCircuitBreaker creates a new circuit breaker with the given configuration
func (*CircuitBreaker) Execute ¶
func (cb *CircuitBreaker) Execute(ctx context.Context, fn func() error) error
Execute wraps a function call with circuit breaker logic
func (*CircuitBreaker) Failures ¶
func (cb *CircuitBreaker) Failures() int
Failures returns the current failure count
func (*CircuitBreaker) Reset ¶
func (cb *CircuitBreaker) Reset()
Reset manually resets the circuit breaker to closed state
func (*CircuitBreaker) State ¶
func (cb *CircuitBreaker) State() CircuitBreakerState
State returns the current state of the circuit breaker
func (*CircuitBreaker) Stats ¶
func (cb *CircuitBreaker) Stats() CircuitBreakerStats
Stats returns current statistics
func (*CircuitBreaker) Successes ¶
func (cb *CircuitBreaker) Successes() int
Successes returns the current success count (only relevant in half-open state)
func (*CircuitBreaker) TransitionToHalfOpen ¶
func (cb *CircuitBreaker) TransitionToHalfOpen()
TransitionToHalfOpen transitions the circuit breaker to half-open state
type CircuitBreakerConfig ¶
type CircuitBreakerConfig struct {
// MaxFailures is the maximum number of failures before opening the circuit
MaxFailures int
// Timeout is how long to wait before transitioning from Open to Half-Open
Timeout time.Duration
// MaxConcurrentRequests is the max requests allowed in Half-Open state
MaxConcurrentRequests int
// SuccessThreshold is the number of consecutive successes needed in Half-Open to go to Closed
SuccessThreshold int
// RequestTimeout is the maximum time to wait for a single request
RequestTimeout time.Duration
}
CircuitBreakerConfig defines configuration for the circuit breaker
func DefaultCircuitBreakerConfig ¶
func DefaultCircuitBreakerConfig() CircuitBreakerConfig
DefaultCircuitBreakerConfig returns a default configuration
type CircuitBreakerState ¶
type CircuitBreakerState int32
CircuitBreakerState represents the state of a circuit breaker
const ( StateClosed CircuitBreakerState = iota StateHalfOpen StateOpen )
func (CircuitBreakerState) String ¶
func (s CircuitBreakerState) String() string
type CircuitBreakerStats ¶
type CircuitBreakerStats struct {
State CircuitBreakerState
Failures int
Successes int
Requests int
}
Stats returns statistics about the circuit breaker
type RetryConfig ¶
type RetryConfig struct {
// MaxRetries is the maximum number of retry attempts
MaxRetries int
// InitialBackoff is the initial backoff duration
InitialBackoff time.Duration
// MaxBackoff is the maximum backoff duration
MaxBackoff time.Duration
// BackoffMultiplier is the multiplier for exponential backoff
BackoffMultiplier float64
// Jitter adds randomness to backoff to avoid thundering herd
Jitter bool
// RetryableErrors is a function that determines if an error is retryable
RetryableErrors func(error) bool
}
RetryConfig defines configuration for retry logic
func DefaultRetryConfig ¶
func DefaultRetryConfig() RetryConfig
DefaultRetryConfig returns a default retry configuration
type RetryStats ¶
type RetryStats struct {
TotalAttempts int
SuccessfulCalls int
FailedCalls int
TotalRetries int
AverageBackoff time.Duration
LastError error
}
RetryStats tracks retry statistics
func RetryWithStats ¶
func RetryWithStats(ctx context.Context, config RetryConfig, fn RetryableFunc) (RetryStats, error)
RetryWithStats executes a function with retry logic and tracks statistics
type RetryableFunc ¶
type RetryableFunc func() error
RetryableFunc is a function that can be retried