reliability

package
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 29, 2025 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ExecuteCryptoOperation

func ExecuteCryptoOperation(
	ctx context.Context,
	operationType CryptoOperationType,
	operationName string,
	operation func(context.Context) error,
) error

ExecuteCryptoOperation executes a crypto operation with global reliability protection

func ExecuteCryptoOperationWithFallback

func ExecuteCryptoOperationWithFallback(
	ctx context.Context,
	operationType CryptoOperationType,
	operationName string,
	operation func(context.Context) error,
	fallback func(context.Context) error,
) error

ExecuteCryptoOperationWithFallback executes a crypto operation with global reliability protection and fallback

func ExecuteReliably

func ExecuteReliably(ctx context.Context, serviceName string, operation func(context.Context) error) error

ExecuteReliably executes an operation with default reliability configuration

func ExecuteReliablyWithConfig

func ExecuteReliablyWithConfig(
	ctx context.Context,
	serviceName string,
	config ReliabilityConfig,
	operation func(context.Context) error,
) error

ExecuteReliablyWithConfig executes an operation with custom reliability configuration

func GetCryptoReliabilityStats

func GetCryptoReliabilityStats() map[string]ReliabilityStats

GetCryptoReliabilityStats returns statistics for all crypto reliability services

func GetHealthyCryptoServices

func GetHealthyCryptoServices() []string

GetHealthyCryptoServices returns a list of healthy crypto services

func GetUnhealthyCryptoServices

func GetUnhealthyCryptoServices() []string

GetUnhealthyCryptoServices returns a list of unhealthy crypto services

func IsCircuitOpenError

func IsCircuitOpenError(err error) bool

IsCircuitOpenError checks if an error is a circuit open error

func IsNetworkError

func IsNetworkError(err error) bool

IsNetworkError checks if an error is network-related

func IsRetryableStatusCode

func IsRetryableStatusCode(statusCode int) bool

IsRetryableStatusCode checks if an HTTP status code is retryable

func IsTemporaryError

func IsTemporaryError(err error) bool

IsTemporaryError checks if an error is temporary and should be retried

func Retry

func Retry(ctx context.Context, operation func(context.Context) error) error

Retry executes an operation with default retry policy

func RetryWithConfig

func RetryWithConfig(ctx context.Context, operation func(context.Context) error, config RetryConfig) error

RetryWithConfig executes an operation with custom retry configuration

func RetryableOperation

func RetryableOperation(
	ctx context.Context,
	operation func(context.Context) error,
	config RetryConfig,
) error

RetryableOperation is a convenience function for executing operations with retry

func RetryableOperationWithFallback

func RetryableOperationWithFallback(
	ctx context.Context,
	operation func(context.Context) error,
	fallback func(context.Context, error) error,
	config RetryConfig,
) error

RetryableOperationWithFallback executes an operation with retry and fallback

Types

type CircuitBreaker

type CircuitBreaker struct {
	// contains filtered or unexported fields
}

CircuitBreaker implements the circuit breaker pattern for fault tolerance

func GetCircuitBreaker

func GetCircuitBreaker(name string) *CircuitBreaker

GetCircuitBreaker gets or creates a circuit breaker with default configuration

func GetCircuitBreakerWithConfig

func GetCircuitBreakerWithConfig(name string, config CircuitBreakerConfig) *CircuitBreaker

GetCircuitBreakerWithConfig gets or creates a circuit breaker with custom configuration

func NewCircuitBreaker

func NewCircuitBreaker(name string, 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(context.Context) error) error

Execute executes the given function with circuit breaker protection

func (*CircuitBreaker) ExecuteWithFallback

func (cb *CircuitBreaker) ExecuteWithFallback(ctx context.Context, fn func(context.Context) error, fallback func(context.Context) error) error

ExecuteWithFallback executes the function with circuit breaker protection and fallback

func (*CircuitBreaker) State

func (cb *CircuitBreaker) State() CircuitState

State returns the current state of the circuit breaker

func (*CircuitBreaker) Stats

func (cb *CircuitBreaker) Stats() CircuitBreakerStats

Stats returns statistics about the circuit breaker

type CircuitBreakerConfig

type CircuitBreakerConfig struct {
	// FailureThreshold is the number of failures before opening the circuit
	FailureThreshold int
	// SuccessThreshold is the number of successes needed to close the circuit in half-open state
	SuccessThreshold int
	// Timeout is how long the circuit stays open before transitioning to half-open
	Timeout time.Duration
	// MaxConcurrentRequests is the maximum number of requests allowed in half-open state
	MaxConcurrentRequests int
	// ShouldTrip is a custom function to determine if an error should count as a failure
	ShouldTrip func(error) bool
	// OnStateChange is called when the circuit state changes
	OnStateChange func(name string, from, to CircuitState)
}

CircuitBreakerConfig holds configuration for the circuit breaker

func DefaultCircuitBreakerConfig

func DefaultCircuitBreakerConfig() CircuitBreakerConfig

DefaultCircuitBreakerConfig returns a default configuration

type CircuitBreakerRegistry

type CircuitBreakerRegistry struct {
	// contains filtered or unexported fields
}

CircuitBreakerRegistry manages multiple circuit breakers

func NewCircuitBreakerRegistry

func NewCircuitBreakerRegistry() *CircuitBreakerRegistry

NewCircuitBreakerRegistry creates a new circuit breaker registry

func (*CircuitBreakerRegistry) AllStats

AllStats returns statistics for all registered circuit breakers

func (*CircuitBreakerRegistry) Clear

func (r *CircuitBreakerRegistry) Clear()

Clear removes all circuit breakers from the registry

func (*CircuitBreakerRegistry) Get

Get retrieves a circuit breaker by name

func (*CircuitBreakerRegistry) GetOrCreate

func (r *CircuitBreakerRegistry) GetOrCreate(name string, config CircuitBreakerConfig) *CircuitBreaker

GetOrCreate gets an existing circuit breaker or creates a new one

func (*CircuitBreakerRegistry) Remove

func (r *CircuitBreakerRegistry) Remove(name string) bool

Remove removes a circuit breaker from the registry

type CircuitBreakerStats

type CircuitBreakerStats struct {
	Name               string       `json:"name"`
	State              CircuitState `json:"state"`
	FailureCount       int          `json:"failure_count"`
	SuccessCount       int          `json:"success_count"`
	LastFailureTime    time.Time    `json:"last_failure_time,omitempty"`
	NextAttemptTime    time.Time    `json:"next_attempt_time,omitempty"`
	ConcurrentRequests int          `json:"concurrent_requests"`
}

CircuitBreakerStats contains statistics about a circuit breaker

type CircuitOpenError

type CircuitOpenError struct {
	CircuitName     string    `json:"circuit_name"`
	NextAttemptTime time.Time `json:"next_attempt_time"`
}

CircuitOpenError is returned when the circuit breaker is open

func NewCircuitOpenError

func NewCircuitOpenError(circuitName string, nextAttemptTime time.Time) *CircuitOpenError

NewCircuitOpenError creates a new circuit open error

func (*CircuitOpenError) Error

func (e *CircuitOpenError) Error() string

Error implements the error interface

type CircuitState

type CircuitState int

CircuitState represents the current state of the circuit breaker

const (
	// StateClosed - Normal operation, requests pass through
	StateClosed CircuitState = iota
	// StateOpen - Circuit is open, requests fail fast
	StateOpen
	// StateHalfOpen - Testing state, limited requests allowed
	StateHalfOpen
)

func (CircuitState) String

func (s CircuitState) String() string

String returns the string representation of the circuit state

type CryptoOperationType

type CryptoOperationType string

CryptoOperationType represents the type of crypto operation

const (
	KMSOperation      CryptoOperationType = "kms"
	DatabaseOperation CryptoOperationType = "db"
	NetworkOperation  CryptoOperationType = "network"
)

type CryptoReliabilityConfig

type CryptoReliabilityConfig struct {
	// KMS operations configuration
	KMSOperations ReliabilityConfig
	// Database operations configuration
	DatabaseOperations ReliabilityConfig
	// Network operations configuration
	NetworkOperations ReliabilityConfig
}

CryptoReliabilityConfig holds configuration for crypto operations reliability

func DefaultCryptoReliabilityConfig

func DefaultCryptoReliabilityConfig() CryptoReliabilityConfig

DefaultCryptoReliabilityConfig returns default reliability configuration for crypto operations

type CryptoReliabilityManager

type CryptoReliabilityManager struct {
	// contains filtered or unexported fields
}

CryptoReliabilityManager manages reliability services for crypto operations

func NewCryptoReliabilityManager

func NewCryptoReliabilityManager(config CryptoReliabilityConfig) *CryptoReliabilityManager

NewCryptoReliabilityManager creates a new crypto reliability manager

func (*CryptoReliabilityManager) ExecuteDatabaseOperation

func (crm *CryptoReliabilityManager) ExecuteDatabaseOperation(
	ctx context.Context,
	operationName string,
	operation func(context.Context) error,
) error

ExecuteDatabaseOperation executes a database operation with reliability protection

func (*CryptoReliabilityManager) ExecuteDatabaseOperationWithFallback

func (crm *CryptoReliabilityManager) ExecuteDatabaseOperationWithFallback(
	ctx context.Context,
	operationName string,
	operation func(context.Context) error,
	fallback func(context.Context) error,
) error

ExecuteDatabaseOperationWithFallback executes a database operation with reliability protection and fallback

func (*CryptoReliabilityManager) ExecuteKMSOperation

func (crm *CryptoReliabilityManager) ExecuteKMSOperation(
	ctx context.Context,
	operationName string,
	operation func(context.Context) error,
) error

ExecuteKMSOperation executes a KMS operation with reliability protection

func (*CryptoReliabilityManager) ExecuteKMSOperationWithFallback

func (crm *CryptoReliabilityManager) ExecuteKMSOperationWithFallback(
	ctx context.Context,
	operationName string,
	operation func(context.Context) error,
	fallback func(context.Context) error,
) error

ExecuteKMSOperationWithFallback executes a KMS operation with reliability protection and fallback

func (*CryptoReliabilityManager) ExecuteNetworkOperation

func (crm *CryptoReliabilityManager) ExecuteNetworkOperation(
	ctx context.Context,
	operationName string,
	operation func(context.Context) error,
) error

ExecuteNetworkOperation executes a network operation with reliability protection

func (*CryptoReliabilityManager) ExecuteNetworkOperationWithFallback

func (crm *CryptoReliabilityManager) ExecuteNetworkOperationWithFallback(
	ctx context.Context,
	operationName string,
	operation func(context.Context) error,
	fallback func(context.Context) error,
) error

ExecuteNetworkOperationWithFallback executes a network operation with reliability protection and fallback

func (*CryptoReliabilityManager) ExecuteOperation

func (crm *CryptoReliabilityManager) ExecuteOperation(
	ctx context.Context,
	operationType CryptoOperationType,
	operationName string,
	operation func(context.Context) error,
) error

ExecuteOperation executes a crypto operation with appropriate reliability configuration

func (*CryptoReliabilityManager) ExecuteOperationWithFallback

func (crm *CryptoReliabilityManager) ExecuteOperationWithFallback(
	ctx context.Context,
	operationType CryptoOperationType,
	operationName string,
	operation func(context.Context) error,
	fallback func(context.Context) error,
) error

ExecuteOperationWithFallback executes a crypto operation with appropriate reliability configuration and fallback

func (*CryptoReliabilityManager) GetAllStats

func (crm *CryptoReliabilityManager) GetAllStats() map[string]ReliabilityStats

GetAllStats returns statistics for all crypto reliability services

func (*CryptoReliabilityManager) GetHealthyServices

func (crm *CryptoReliabilityManager) GetHealthyServices() []string

GetHealthyServices returns a list of healthy crypto services

func (*CryptoReliabilityManager) GetUnhealthyServices

func (crm *CryptoReliabilityManager) GetUnhealthyServices() []string

GetUnhealthyServices returns a list of unhealthy crypto services

func (*CryptoReliabilityManager) IsOperationHealthy

func (crm *CryptoReliabilityManager) IsOperationHealthy(operationType, operationName string) bool

IsOperationHealthy checks if a specific operation type is healthy

type ExponentialBackoffPolicy

type ExponentialBackoffPolicy struct {
	// contains filtered or unexported fields
}

ExponentialBackoffPolicy implements exponential backoff with jitter

func NewExponentialBackoffPolicy

func NewExponentialBackoffPolicy(config RetryConfig) *ExponentialBackoffPolicy

NewExponentialBackoffPolicy creates a new exponential backoff policy

func (*ExponentialBackoffPolicy) MaxAttempts

func (p *ExponentialBackoffPolicy) MaxAttempts() int

MaxAttempts returns the maximum number of attempts

func (*ExponentialBackoffPolicy) NextDelay

func (p *ExponentialBackoffPolicy) NextDelay(attempt int) time.Duration

NextDelay calculates the delay for the next retry attempt

func (*ExponentialBackoffPolicy) ShouldRetry

func (p *ExponentialBackoffPolicy) ShouldRetry(err error, attempt int) bool

ShouldRetry determines if a retry should be attempted

type FixedDelayPolicy

type FixedDelayPolicy struct {
	// contains filtered or unexported fields
}

FixedDelayPolicy implements a fixed delay between retries

func NewFixedDelayPolicy

func NewFixedDelayPolicy(maxAttempts int, delay time.Duration, shouldRetry func(error, int) bool) *FixedDelayPolicy

NewFixedDelayPolicy creates a new fixed delay policy

func (*FixedDelayPolicy) MaxAttempts

func (p *FixedDelayPolicy) MaxAttempts() int

MaxAttempts returns the maximum number of attempts

func (*FixedDelayPolicy) NextDelay

func (p *FixedDelayPolicy) NextDelay(attempt int) time.Duration

NextDelay returns the fixed delay

func (*FixedDelayPolicy) ShouldRetry

func (p *FixedDelayPolicy) ShouldRetry(err error, attempt int) bool

ShouldRetry determines if a retry should be attempted

type LinearBackoffPolicy

type LinearBackoffPolicy struct {
	// contains filtered or unexported fields
}

LinearBackoffPolicy implements linear backoff

func NewLinearBackoffPolicy

func NewLinearBackoffPolicy(maxAttempts int, initialDelay, increment, maxDelay time.Duration, shouldRetry func(error, int) bool) *LinearBackoffPolicy

NewLinearBackoffPolicy creates a new linear backoff policy

func (*LinearBackoffPolicy) MaxAttempts

func (p *LinearBackoffPolicy) MaxAttempts() int

MaxAttempts returns the maximum number of attempts

func (*LinearBackoffPolicy) NextDelay

func (p *LinearBackoffPolicy) NextDelay(attempt int) time.Duration

NextDelay calculates the delay for linear backoff

func (*LinearBackoffPolicy) ShouldRetry

func (p *LinearBackoffPolicy) ShouldRetry(err error, attempt int) bool

ShouldRetry determines if a retry should be attempted

type ReliabilityConfig

type ReliabilityConfig struct {
	// CircuitBreakerConfig for circuit breaker behavior
	CircuitBreaker CircuitBreakerConfig
	// RetryConfig for retry behavior
	Retry RetryConfig
	// EnableMetrics enables metrics collection
	EnableMetrics bool
	// MetricsPrefix for metric names
	MetricsPrefix string
}

ReliabilityConfig holds configuration for the reliability service

func DefaultReliabilityConfig

func DefaultReliabilityConfig() ReliabilityConfig

DefaultReliabilityConfig returns a default reliability configuration

type ReliabilityManager

type ReliabilityManager struct {
	// contains filtered or unexported fields
}

ReliabilityManager manages multiple reliability services

func NewReliabilityManager

func NewReliabilityManager() *ReliabilityManager

NewReliabilityManager creates a new reliability manager

func (*ReliabilityManager) Clear

func (rm *ReliabilityManager) Clear()

Clear removes all services from the manager

func (*ReliabilityManager) Get

Get retrieves a service by name

func (*ReliabilityManager) GetAllStats

func (rm *ReliabilityManager) GetAllStats() map[string]ReliabilityStats

GetAllStats returns statistics for all managed services

func (*ReliabilityManager) GetHealthyServices

func (rm *ReliabilityManager) GetHealthyServices() []string

GetHealthyServices returns a list of services that are currently healthy

func (*ReliabilityManager) GetOrCreate

func (rm *ReliabilityManager) GetOrCreate(name string, config ReliabilityConfig) *ReliabilityService

GetOrCreate gets an existing service or creates a new one

func (*ReliabilityManager) GetUnhealthyServices

func (rm *ReliabilityManager) GetUnhealthyServices() []string

GetUnhealthyServices returns a list of services that are currently unhealthy

func (*ReliabilityManager) Remove

func (rm *ReliabilityManager) Remove(name string) bool

Remove removes a service from the manager

type ReliabilityMetrics

type ReliabilityMetrics struct {
	// contains filtered or unexported fields
}

ReliabilityMetrics collects metrics for reliability operations

func NewReliabilityMetrics

func NewReliabilityMetrics(serviceName, prefix string) *ReliabilityMetrics

NewReliabilityMetrics creates a new metrics collector

func (*ReliabilityMetrics) GetMetrics

func (rm *ReliabilityMetrics) GetMetrics() *ReliabilityMetricsData

GetMetrics returns the current metrics data

func (*ReliabilityMetrics) RecordFailure

func (rm *ReliabilityMetrics) RecordFailure(duration time.Duration, err error)

RecordFailure records a failed operation

func (*ReliabilityMetrics) RecordRetry

func (rm *ReliabilityMetrics) RecordRetry(attempt int, delay time.Duration, err error)

RecordRetry records a retry attempt

func (*ReliabilityMetrics) RecordStateChange

func (rm *ReliabilityMetrics) RecordStateChange(from, to CircuitState)

RecordStateChange records a circuit breaker state change

func (*ReliabilityMetrics) RecordSuccess

func (rm *ReliabilityMetrics) RecordSuccess(duration time.Duration)

RecordSuccess records a successful operation

func (*ReliabilityMetrics) Reset

func (rm *ReliabilityMetrics) Reset()

Reset resets all metrics

type ReliabilityMetricsData

type ReliabilityMetricsData struct {
	TotalRequests       int64            `json:"total_requests"`
	SuccessfulRequests  int64            `json:"successful_requests"`
	FailedRequests      int64            `json:"failed_requests"`
	CircuitOpenRequests int64            `json:"circuit_open_requests"`
	RetryAttempts       int64            `json:"retry_attempts"`
	TotalLatency        time.Duration    `json:"total_latency"`
	AverageLatency      time.Duration    `json:"average_latency"`
	StateTransitions    map[string]int64 `json:"state_transitions"`
	LastUpdate          time.Time        `json:"last_update"`
}

ReliabilityMetricsData contains metric data

type ReliabilityService

type ReliabilityService struct {
	// contains filtered or unexported fields
}

ReliabilityService combines circuit breaker and retry policies for fault tolerance

func GetReliabilityService

func GetReliabilityService(name string) *ReliabilityService

GetReliabilityService gets or creates a reliability service with default configuration

func GetReliabilityServiceWithConfig

func GetReliabilityServiceWithConfig(name string, config ReliabilityConfig) *ReliabilityService

GetReliabilityServiceWithConfig gets or creates a reliability service with custom configuration

func NewReliabilityService

func NewReliabilityService(name string, config ReliabilityConfig) *ReliabilityService

NewReliabilityService creates a new reliability service

func (*ReliabilityService) Execute

func (rs *ReliabilityService) Execute(ctx context.Context, operation func(context.Context) error) error

Execute executes an operation with both circuit breaker and retry protection

func (*ReliabilityService) ExecuteWithFallback

func (rs *ReliabilityService) ExecuteWithFallback(
	ctx context.Context,
	operation func(context.Context) error,
	fallback func(context.Context) error,
) error

ExecuteWithFallback executes an operation with circuit breaker, retry, and fallback

func (*ReliabilityService) GetStats

func (rs *ReliabilityService) GetStats() ReliabilityStats

GetStats returns comprehensive statistics about the reliability service

func (*ReliabilityService) IsHealthy

func (rs *ReliabilityService) IsHealthy() bool

IsHealthy returns true if the service is in a healthy state

func (*ReliabilityService) ResetStats

func (rs *ReliabilityService) ResetStats()

ResetStats resets all statistics

type ReliabilityStats

type ReliabilityStats struct {
	Name                string                  `json:"name"`
	CircuitBreakerStats CircuitBreakerStats     `json:"circuit_breaker"`
	RetryStats          RetryStats              `json:"retry"`
	Metrics             *ReliabilityMetricsData `json:"metrics,omitempty"`
}

ReliabilityStats contains comprehensive statistics

type ReliabilityWrapper

type ReliabilityWrapper struct {
	// contains filtered or unexported fields
}

ReliabilityWrapper provides a simple interface for adding reliability to any operation

func NewReliabilityWrapper

func NewReliabilityWrapper(name string) *ReliabilityWrapper

NewReliabilityWrapper creates a new reliability wrapper with default configuration

func NewReliabilityWrapperWithConfig

func NewReliabilityWrapperWithConfig(name string, config ReliabilityConfig) *ReliabilityWrapper

NewReliabilityWrapperWithConfig creates a new reliability wrapper with custom configuration

func (*ReliabilityWrapper) GetStats

func (rw *ReliabilityWrapper) GetStats() ReliabilityStats

GetStats returns statistics for the wrapped service

func (*ReliabilityWrapper) IsHealthy

func (rw *ReliabilityWrapper) IsHealthy() bool

IsHealthy returns true if the wrapped service is healthy

func (*ReliabilityWrapper) Wrap

func (rw *ReliabilityWrapper) Wrap(ctx context.Context, operation func(context.Context) error) error

Wrap wraps an operation with reliability protection

func (*ReliabilityWrapper) WrapWithFallback

func (rw *ReliabilityWrapper) WrapWithFallback(
	ctx context.Context,
	operation func(context.Context) error,
	fallback func(context.Context) error,
) error

WrapWithFallback wraps an operation with reliability protection and fallback

type RetryConfig

type RetryConfig struct {
	// MaxAttempts is the maximum number of attempts (including initial attempt)
	MaxAttempts int
	// InitialDelay is the delay before the first retry
	InitialDelay time.Duration
	// MaxDelay is the maximum delay between retries
	MaxDelay time.Duration
	// Multiplier for exponential backoff
	Multiplier float64
	// Jitter adds randomness to delay calculations
	Jitter float64
	// RetryableErrors is a list of error types that should trigger retries
	RetryableErrors []error
	// ShouldRetry is a custom function to determine if an error should trigger a retry
	ShouldRetry func(error, int) bool
	// OnRetry is called before each retry attempt
	OnRetry func(attempt int, delay time.Duration, err error)
}

RetryConfig holds configuration for retry operations

func DefaultRetryConfig

func DefaultRetryConfig() RetryConfig

DefaultRetryConfig returns a default retry configuration

type RetryExecutor

type RetryExecutor struct {
	// contains filtered or unexported fields
}

RetryExecutor handles retry logic for operations

func NewRetryExecutor

func NewRetryExecutor(policy RetryPolicy) *RetryExecutor

NewRetryExecutor creates a new retry executor with the given policy

func (*RetryExecutor) Execute

func (r *RetryExecutor) Execute(ctx context.Context, operation func(context.Context) error) error

Execute executes the given operation with retry logic

func (*RetryExecutor) ExecuteWithFallback

func (r *RetryExecutor) ExecuteWithFallback(
	ctx context.Context,
	operation func(context.Context) error,
	fallback func(context.Context, error) error,
) error

ExecuteWithFallback executes the operation with retry logic and a fallback function

func (*RetryExecutor) SetOnRetryCallback

func (r *RetryExecutor) SetOnRetryCallback(callback func(attempt int, delay time.Duration, err error))

SetOnRetryCallback sets a callback function to be called before each retry

type RetryExecutorWithStats

type RetryExecutorWithStats struct {
	*RetryExecutor
	// contains filtered or unexported fields
}

RetryExecutorWithStats extends RetryExecutor with statistics collection

func NewRetryExecutorWithStats

func NewRetryExecutorWithStats(policy RetryPolicy) *RetryExecutorWithStats

NewRetryExecutorWithStats creates a new retry executor with statistics

func (*RetryExecutorWithStats) ExecuteWithStats

func (r *RetryExecutorWithStats) ExecuteWithStats(ctx context.Context, operation func(context.Context) error) error

ExecuteWithStats executes the operation and updates statistics

func (*RetryExecutorWithStats) GetStats

func (r *RetryExecutorWithStats) GetStats() RetryStats

GetStats returns the current retry statistics

func (*RetryExecutorWithStats) ResetStats

func (r *RetryExecutorWithStats) ResetStats()

ResetStats resets the statistics

type RetryPolicy

type RetryPolicy interface {
	// NextDelay returns the delay before the next attempt, given the attempt number (0-indexed)
	NextDelay(attempt int) time.Duration
	// ShouldRetry determines if a retry should be attempted based on the error and attempt number
	ShouldRetry(err error, attempt int) bool
	// MaxAttempts returns the maximum number of attempts (including the initial attempt)
	MaxAttempts() int
}

RetryPolicy defines the interface for retry policies

type RetryStats

type RetryStats struct {
	TotalAttempts     int           `json:"total_attempts"`
	SuccessfulRetries int           `json:"successful_retries"`
	FailedRetries     int           `json:"failed_retries"`
	TotalDelay        time.Duration `json:"total_delay"`
	LastError         string        `json:"last_error,omitempty"`
}

RetryStats contains statistics about retry operations

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL