package retry

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

Index

Constants

const (
	TypeNoBackoff   = backoff.TypeNoBackoff
	TypeFastBackoff = backoff.TypeFast
	TypeSlowBackoff = backoff.TypeSlow
)

Functions

func Backoff

func Backoff(slotDuration time.Duration, ceiling uint, jitterLimit float64) backoff.Backoff

Backoff makes backoff object with custom params

func Check

func Check(err error) (m retry.Mode)

Check returns retry mode for err.

func DoTx

func DoTx(ctx context.Context, db *sql.DB, f TxOperationFunc, opts ...DoTxOption) error

DoTx is a shortcut for calling Do(ctx, f) on initialized TxDoer with DB field set to given db.

func IsOperationIdempotent

func IsOperationIdempotent(ctx context.Context) bool

IsOperationIdempotent returns the flag for retry with no idempotent errors Deprecated: context cannot store idempotent value now

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:

- context 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

RetryableError makes retryable error from options RetryableError provides retrying on custom errors

func WithBackoff

func WithBackoff(t backoff.Type) retryableErrorOption

WithBackoff makes retryable error option with custom backoff type

func WithDeleteSession

func WithDeleteSession() retryableErrorOption

WithDeleteSession makes retryable error option with delete session flag

func WithFastBackoff

func WithFastBackoff(b backoff.Backoff) retryOption

WithFastBackoff replaces default fast backoff

func WithID

func WithID(id string) retryOption

WithID applies id for identification call Retry in trace.Retry.OnRetry

func WithIdempotent

func WithIdempotent(idempotent bool) retryOption

WithIdempotent applies idempotent flag to retry operation

func WithIdempotentOperation

func WithIdempotentOperation(ctx context.Context) context.Context

WithIdempotentOperation returns a copy of parent context with idempotent operation feature Deprecated: use retry.WithIdempotent option instead

func WithNonIdempotentOperation

func WithNonIdempotentOperation(ctx context.Context) context.Context

WithNonIdempotentOperation returns a copy of parent context with non-idempotent operation feature Deprecated: idempotent flag is false by default

func WithPanicCallback

func WithPanicCallback(panicCallback func(e interface{})) retryOption

WithPanicCallback returns panic callback option If not defined - panic would not intercept with driver

func WithSlowBackoff

func WithSlowBackoff(b backoff.Backoff) retryOption

WithSlowBackoff replaces default slow backoff

func WithStackTrace

func WithStackTrace() retryOption

WithStackTrace wraps errors with stacktrace from Retry call

func WithTrace

func WithTrace(trace trace.Retry) retryOption

WithTrace returns trace option

Types

type DoTxOption

type DoTxOption func(o *doTxOptions) error

DoTxOption defines option for redefine default DoTx behavior

func Idempotent

func Idempotent(idempotent bool) DoTxOption

Idempotent marked TxOperation as idempotent for best effort retrying

func WithTxOptions

func WithTxOptions(txOptions *sql.TxOptions) DoTxOption

WithTxOptions replaces default txOptions

func WithTxSettings

func WithTxSettings(txControl *table.TransactionSettings) DoTxOption

WithTxSettings makes driver.TxOptions by given txControl

type TxOperationFunc

type TxOperationFunc func(context.Context, *sql.Tx) error

TxOperationFunc is a user-defined lambda for retrying

Source Files

backoff.go context.go retry.go retryable_error.go sql.go

Version
v3.33.0-rc6
Published
Aug 9, 2022
Platform
js/wasm
Imports
11 packages
Last checked
2 seconds ago

Tools for package owners.