package retry

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

Index

Constants

const (
	BackoffTypeNoBackoff   = errors.BackoffTypeNoBackoff
	BackoffTypeFastBackoff = errors.BackoffTypeFastBackoff
	BackoffTypeSlowBackoff = errors.BackoffTypeSlowBackoff
)

Variables

var (
	FastBackoff = newBackoff(
		withSlotDuration(fastSlot),
		withCeiling(6),
	)
	SlowBackoff = newBackoff(
		withSlotDuration(slowSlot),
		withCeiling(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, op retryOperation, opts ...retryOption) (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 If you need to retry your op func on some logic errors - you must return RetryableError() from retryOperation

func RetryableError

func RetryableError(err error, opts ...retryableErrorOption) error

func Wait

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

func WithBackoff

func WithBackoff(t errors.BackoffType) retryableErrorOption

func WithDeleteSession

func WithDeleteSession() retryableErrorOption

func WithFastBackoff

func WithFastBackoff(b Backoff) retryOption

WithFastBackoff returns fast backoff trace option

func WithID

func WithID(id string) retryOption

WithID returns id option

func WithIdempotent

func WithIdempotent() retryOption

WithIdempotent returns idempotent trace option

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

func WithSlowBackoff

func WithSlowBackoff(b Backoff) retryOption

WithSlowBackoff returns fast backoff trace option

func WithTrace

func WithTrace(trace trace.Retry) retryOption

WithTrace returns trace option

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.16.8
Published
Mar 23, 2022
Platform
darwin/amd64
Imports
6 packages
Last checked
26 seconds ago

Tools for package owners.