package retry

import "github.com/ydb-platform/ydb-go-sdk/v3/retry"

Index

Variables

var (
	FastBackoff = logBackoff{
		SlotDuration: fastSlot,
		Ceiling:      6,
	}
	SlowBackoff = logBackoff{
		SlotDuration: slowSlot,
		Ceiling:      6,
	}
)

Default parameters used by Retry() functions within different sub packages.

Functions

func Check

func Check(err error) (m retryMode)

Check returns retry mode for err.

func IsOperationIdempotent

func IsOperationIdempotent(ctx context.Context) bool

IsOperationIdempotent returns the flag for retry with no idempotent errors

func Retry

func Retry(ctx context.Context, isIdempotentOperation bool, op retryOperation) (err error)

Retry provide the best effort fo retrying operation Retry implements internal busy loop until one of the following conditions is met: - deadline was canceled or deadlined - retry operation returned nil as error Warning: if deadline without deadline or cancellation func Retry will be worked infinite

func Wait

func Wait(ctx context.Context, fastBackoff Backoff, slowBackoff Backoff, m retryMode, i int) error

func WithIdempotentOperation

func WithIdempotentOperation(ctx context.Context) context.Context

WithIdempotentOperation returns a copy of parent context with idempotent operation feature

func WithNonIdempotentOperation

func WithNonIdempotentOperation(ctx context.Context) context.Context

WithNonIdempotentOperation returns a copy of parent context with non-idempotent operation feature

Types

type Backoff

type Backoff interface {
	// Wait maps index of the retry to a channel which fulfillment means that
	// delay is over.
	//
	// Note that retry index begins from 0 and 0-th index means that it is the
	// first retry attempt after an initial error.
	Wait(n int) <-chan time.Time
}

Backoff is the interface that contains logic of delaying operation retry.

Source Files

context.go retry.go

Version
v3.1.0-alpha
Published
Oct 26, 2021
Platform
js/wasm
Imports
6 packages
Last checked
now

Tools for package owners.