Documentation
ΒΆ
Overview ΒΆ
Package repeat provides configurable retry logic with support for exponential backoff, jitter, and custom retry policies.
Index ΒΆ
- Constants
- func ConnectWithRetry(ctx context.Context, dial DialFunc, opts ...OptionSetter) (*websocket.Conn, error)
- func Exec(ctx context.Context, op Operation, opts ...OptionSetter) error
- func FullJitter(d time.Duration) time.Duration
- type ClientWithRetry
- type Config
- type DialFunc
- type Operation
- type OptionSetter
- func WithErrorFilter(fn func(error) bool) OptionSetter
- func WithExponentialBackoff(base, max time.Duration) OptionSetter
- func WithJitter(fn func(time.Duration) time.Duration) OptionSetter
- func WithMaxAttempts(n int) OptionSetter
- func WithMaxWait(d time.Duration) OptionSetter
- func WithMinWait(d time.Duration) OptionSetter
- func WithRetryPolicy(fn func(int, error) bool) OptionSetter
- type TemporaryError
Constants ΒΆ
const ( DefaultMinWait = time.Second DefaultMaxWait = time.Minute DefaultMaxRetries = -1 DefaultBackoff = 500 * time.Millisecond MaxBackoff = 30 * time.Second MaxTotalDuration = 24 * time.Hour )
Default configuration constants.
Variables ΒΆ
This section is empty.
Functions ΒΆ
func ConnectWithRetry ΒΆ
Types ΒΆ
type ClientWithRetry ΒΆ
type ClientWithRetry struct {
// contains filtered or unexported fields
}
func NewClient ΒΆ
func NewClient(baseClient *http.Client, opts ...OptionSetter) *ClientWithRetry
type Config ΒΆ
type Config struct { MinTimeWait time.Duration // Minimum delay between attempts MaxTimeWait time.Duration // Maximum delay cap MaxRetries int // Maximum attempts (-1 = infinite) BackoffBase time.Duration // Base duration for exponential backoff BackoffMax time.Duration // Maximum backoff duration UseBackoff bool // Enable exponential backoff ErrorHandler func(err error) bool // Basic error filter JitterFunc func(d time.Duration) time.Duration // Delay randomizer ShouldRetry func(retryCount int, err error) bool // Advanced retry policy }
Config holds retry configuration parameters.
type Operation ΒΆ
Operation defines a function signature for operations to retry. ctx: Context for cancellation and deadlines retryCount: Current attempt number (0-indexed) Returns: error if operation failed, nil on success
type OptionSetter ΒΆ
type OptionSetter func(*Config)
OptionSetter modifies Config through functional options.
func WithErrorFilter ΒΆ
func WithErrorFilter(fn func(error) bool) OptionSetter
WithErrorFilter sets basic error evaluation callback.
func WithExponentialBackoff ΒΆ
func WithExponentialBackoff(base, max time.Duration) OptionSetter
WithExponentialBackoff enables backoff with base/max durations.
func WithJitter ΒΆ
func WithJitter(fn func(time.Duration) time.Duration) OptionSetter
WithJitter adds delay randomization function.
func WithMaxAttempts ΒΆ
func WithMaxAttempts(n int) OptionSetter
WithMaxAttempts limits number of retries (-1 for unlimited).
func WithMaxWait ΒΆ
func WithMaxWait(d time.Duration) OptionSetter
WithMaxWait sets maximum delay cap.
func WithMinWait ΒΆ
func WithMinWait(d time.Duration) OptionSetter
WithMinWait sets minimum delay between attempts.
func WithRetryPolicy ΒΆ
func WithRetryPolicy(fn func(int, error) bool) OptionSetter
WithRetryPolicy sets advanced retry decision function.
type TemporaryError ΒΆ
type TemporaryError struct {
StatusCode int
}
TemporaryError represents a temporary error response.
func (*TemporaryError) Error ΒΆ
func (e *TemporaryError) Error() string
Error implements the error interface.
func (*TemporaryError) Temporary ΒΆ
func (e *TemporaryError) Temporary() bool
Temporary returns true if the error is temporary.