retry

package
v0.4.3 Latest Latest
Warning

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

Go to latest
Published: Aug 13, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultJitter = 0.20

Variables

View Source
var DefaultBackoff = []time.Duration{
	time.Second,
	5 * time.Second,
	30 * time.Second,
	2 * time.Minute,
}

Functions

func CanonicalPublic

func CanonicalPublic(p PublicPolicy) (canonical.Value, error)

func ValidatePublic

func ValidatePublic(p PublicPolicy) error

Types

type Decision

type Decision struct {
	Retry            bool
	ConsumesAttempt  bool
	ConsumedAttempts int
	NextAttemptAt    time.Time
	StopReason       string
}

func Decide

func Decide(policy Policy, input Input) (Decision, error)

func DecidePublic

func DecidePublic(p PublicPolicy, input Input) (Decision, error)

type DurablePolicy

type DurablePolicy struct {
	MaxAttempts *int    `json:"max_attempts,omitempty"`
	MaxElapsed  *int64  `json:"max_elapsed_ms,omitempty"`
	Backoff     []int64 `json:"backoff_ms"`
	Jitter      float64 `json:"jitter"`
}

type ErrorClass

type ErrorClass string
const (
	ClassRetryable   ErrorClass = "retryable"
	ClassRetryAfter  ErrorClass = "retry_after"
	ClassPermanent   ErrorClass = "permanent"
	ClassPanic       ErrorClass = "panic"
	ClassTimeout     ErrorClass = "timeout"
	ClassInterrupted ErrorClass = "interrupted"
	ClassLeaseLost   ErrorClass = "lease_lost"
)

type Input

type Input struct {
	DBNow            time.Time
	BudgetStartedAt  time.Time
	ConsumedAttempts int
	AttemptID        string
	Classification   ErrorClass
	ExplicitDelay    *time.Duration
	RunDeadline      *time.Time
}

type Policy

type Policy struct {
	MaxAttempts *int
	MaxElapsed  *time.Duration
	Backoff     []time.Duration
	Jitter      float64
}

func Attempts

func Attempts(maxAttempts int) Policy

func Default

func Default() Policy

func For

func For(maxElapsed time.Duration) Policy

func ValueOf

func ValueOf(p PublicPolicy) Policy

func (Policy) Clone

func (p Policy) Clone() Policy

func (Policy) Equal

func (p Policy) Equal(other Policy) bool

func (Policy) Fingerprint

func (p Policy) Fingerprint() [sha256.Size]byte

func (Policy) Validate

func (p Policy) Validate() error

type PublicPolicy

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

PublicPolicy is the sealed representation re-exported by package flow. Its fields remain private even though immutable builder methods are public.

func ClonePublic

func ClonePublic(p PublicPolicy) PublicPolicy

func DefaultPublic

func DefaultPublic() PublicPolicy

func NewPublicAttempts

func NewPublicAttempts(max int) PublicPolicy

func NewPublicFor

func NewPublicFor(maxElapsed time.Duration) PublicPolicy

func PublicFromCanonical

func PublicFromCanonical(data []byte) (PublicPolicy, error)

func (PublicPolicy) Attempts

func (p PublicPolicy) Attempts(max int) PublicPolicy

func (PublicPolicy) Backoff

func (p PublicPolicy) Backoff(delays ...time.Duration) PublicPolicy

Jump to

Keyboard shortcuts

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