Documentation
¶
Index ¶
- func ExecuteCryptoOperation(ctx context.Context, operationType CryptoOperationType, operationName string, ...) error
- func ExecuteCryptoOperationWithFallback(ctx context.Context, operationType CryptoOperationType, operationName string, ...) error
- func ExecuteReliably(ctx context.Context, serviceName string, operation func(context.Context) error) error
- func ExecuteReliablyWithConfig(ctx context.Context, serviceName string, config ReliabilityConfig, ...) error
- func GetCryptoReliabilityStats() map[string]ReliabilityStats
- func GetHealthyCryptoServices() []string
- func GetUnhealthyCryptoServices() []string
- func IsCircuitOpenError(err error) bool
- func IsNetworkError(err error) bool
- func IsRetryableStatusCode(statusCode int) bool
- func IsTemporaryError(err error) bool
- func Retry(ctx context.Context, operation func(context.Context) error) error
- func RetryWithConfig(ctx context.Context, operation func(context.Context) error, config RetryConfig) error
- func RetryableOperation(ctx context.Context, operation func(context.Context) error, config RetryConfig) error
- func RetryableOperationWithFallback(ctx context.Context, operation func(context.Context) error, ...) error
- type CircuitBreaker
- func (cb *CircuitBreaker) Execute(ctx context.Context, fn func(context.Context) error) error
- func (cb *CircuitBreaker) ExecuteWithFallback(ctx context.Context, fn func(context.Context) error, ...) error
- func (cb *CircuitBreaker) State() CircuitState
- func (cb *CircuitBreaker) Stats() CircuitBreakerStats
- type CircuitBreakerConfig
- type CircuitBreakerRegistry
- func (r *CircuitBreakerRegistry) AllStats() map[string]CircuitBreakerStats
- func (r *CircuitBreakerRegistry) Clear()
- func (r *CircuitBreakerRegistry) Get(name string) (*CircuitBreaker, bool)
- func (r *CircuitBreakerRegistry) GetOrCreate(name string, config CircuitBreakerConfig) *CircuitBreaker
- func (r *CircuitBreakerRegistry) Remove(name string) bool
- type CircuitBreakerStats
- type CircuitOpenError
- type CircuitState
- type CryptoOperationType
- type CryptoReliabilityConfig
- type CryptoReliabilityManager
- func (crm *CryptoReliabilityManager) ExecuteDatabaseOperation(ctx context.Context, operationName string, ...) error
- func (crm *CryptoReliabilityManager) ExecuteDatabaseOperationWithFallback(ctx context.Context, operationName string, ...) error
- func (crm *CryptoReliabilityManager) ExecuteKMSOperation(ctx context.Context, operationName string, ...) error
- func (crm *CryptoReliabilityManager) ExecuteKMSOperationWithFallback(ctx context.Context, operationName string, ...) error
- func (crm *CryptoReliabilityManager) ExecuteNetworkOperation(ctx context.Context, operationName string, ...) error
- func (crm *CryptoReliabilityManager) ExecuteNetworkOperationWithFallback(ctx context.Context, operationName string, ...) error
- func (crm *CryptoReliabilityManager) ExecuteOperation(ctx context.Context, operationType CryptoOperationType, operationName string, ...) error
- func (crm *CryptoReliabilityManager) ExecuteOperationWithFallback(ctx context.Context, operationType CryptoOperationType, operationName string, ...) error
- func (crm *CryptoReliabilityManager) GetAllStats() map[string]ReliabilityStats
- func (crm *CryptoReliabilityManager) GetHealthyServices() []string
- func (crm *CryptoReliabilityManager) GetUnhealthyServices() []string
- func (crm *CryptoReliabilityManager) IsOperationHealthy(operationType, operationName string) bool
- type ExponentialBackoffPolicy
- type FixedDelayPolicy
- type LinearBackoffPolicy
- type ReliabilityConfig
- type ReliabilityManager
- func (rm *ReliabilityManager) Clear()
- func (rm *ReliabilityManager) Get(name string) (*ReliabilityService, bool)
- func (rm *ReliabilityManager) GetAllStats() map[string]ReliabilityStats
- func (rm *ReliabilityManager) GetHealthyServices() []string
- func (rm *ReliabilityManager) GetOrCreate(name string, config ReliabilityConfig) *ReliabilityService
- func (rm *ReliabilityManager) GetUnhealthyServices() []string
- func (rm *ReliabilityManager) Remove(name string) bool
- type ReliabilityMetrics
- func (rm *ReliabilityMetrics) GetMetrics() *ReliabilityMetricsData
- func (rm *ReliabilityMetrics) RecordFailure(duration time.Duration, err error)
- func (rm *ReliabilityMetrics) RecordRetry(attempt int, delay time.Duration, err error)
- func (rm *ReliabilityMetrics) RecordStateChange(from, to CircuitState)
- func (rm *ReliabilityMetrics) RecordSuccess(duration time.Duration)
- func (rm *ReliabilityMetrics) Reset()
- type ReliabilityMetricsData
- type ReliabilityService
- func (rs *ReliabilityService) Execute(ctx context.Context, operation func(context.Context) error) error
- func (rs *ReliabilityService) ExecuteWithFallback(ctx context.Context, operation func(context.Context) error, ...) error
- func (rs *ReliabilityService) GetStats() ReliabilityStats
- func (rs *ReliabilityService) IsHealthy() bool
- func (rs *ReliabilityService) ResetStats()
- type ReliabilityStats
- type ReliabilityWrapper
- func (rw *ReliabilityWrapper) GetStats() ReliabilityStats
- func (rw *ReliabilityWrapper) IsHealthy() bool
- func (rw *ReliabilityWrapper) Wrap(ctx context.Context, operation func(context.Context) error) error
- func (rw *ReliabilityWrapper) WrapWithFallback(ctx context.Context, operation func(context.Context) error, ...) error
- type RetryConfig
- type RetryExecutor
- func (r *RetryExecutor) Execute(ctx context.Context, operation func(context.Context) error) error
- func (r *RetryExecutor) ExecuteWithFallback(ctx context.Context, operation func(context.Context) error, ...) error
- func (r *RetryExecutor) SetOnRetryCallback(callback func(attempt int, delay time.Duration, err error))
- type RetryExecutorWithStats
- type RetryPolicy
- type RetryStats
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 ¶
IsCircuitOpenError checks if an error is a circuit open error
func IsNetworkError ¶
IsNetworkError checks if an error is network-related
func IsRetryableStatusCode ¶
IsRetryableStatusCode checks if an HTTP status code is retryable
func IsTemporaryError ¶
IsTemporaryError checks if an error is temporary and should be retried
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
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 ¶
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 ¶
func (r *CircuitBreakerRegistry) AllStats() map[string]CircuitBreakerStats
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 ¶
func (r *CircuitBreakerRegistry) Get(name string) (*CircuitBreaker, bool)
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 ¶
func (rm *ReliabilityManager) Get(name string) (*ReliabilityService, bool)
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
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
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) 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