Help us shape the future of Go! Take the 2026 Go Developer Survey

retry

package
v1.16.0 Latest Latest
Warning

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

Go to latest
Published: Oct 30, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package retry — конвенциональные обертки для повторов gRPC-вызовов с экспоненциальным backoff. Поверх `pkg/backoff`.

Использование в cross-service-клиентах:

var resp *pb.Resp
err := retry.OnUnavailable(ctx, func(ctx context.Context) error {
    var err error
    resp, err = client.Foo(ctx, req)
    return err
})

retry-y:

  • OnUnavailable — только при codes.Unavailable (peer downlink, network glitch)
  • OnAborted — при codes.Aborted (OCC retry)
  • OnCodes(codes...) — пользовательский набор кодов

Index

Constants

This section is empty.

Variables

View Source
var Defaults = struct {
	InitialInterval     time.Duration
	Multiplier          float64
	MaxInterval         time.Duration
	MaxElapsed          time.Duration
	RandomizationFactor float64
}{
	InitialInterval:     100 * time.Millisecond,
	Multiplier:          2.0,
	MaxInterval:         5 * time.Second,
	MaxElapsed:          30 * time.Second,
	RandomizationFactor: 0.2,
}

Defaults — стандартные параметры экспоненциального backoff для cross-service gRPC-вызовов в Kachō.

  • InitialInterval: 100ms
  • Multiplier: 2.0
  • MaxInterval: 5s
  • MaxElapsed: 30s (после этого retry прекращается, ошибка возвращается)

Этого достаточно для типичных перезапусков peer-Pod-а (rolling-restart 5-15s).

Functions

func OnAborted

func OnAborted(ctx context.Context, fn func(ctx context.Context) error) error

OnAborted — для OCC-retry (codes.Aborted) при concurrent-обновлениях.

func OnCodes

func OnCodes(ctx context.Context, fn func(ctx context.Context) error, retryCodes ...codes.Code) error

OnCodes — retry если grpc-status попадает в один из перечисленных кодов. Любой другой error (включая ctx-cancel) — fail-fast.

РЕПЛИКИ: запрос — петля принадлежит ОДНОМУ вызову соседа: это его повтор с отсрочкой, завершающийся по исходу. Общего состояния не трогает.

func OnUnavailable

func OnUnavailable(ctx context.Context, fn func(ctx context.Context) error) error

OnUnavailable вызывает fn с retry на codes.Unavailable. Ctx-cancel прерывает retry-цикл немедленно.

ВНИМАНИЕ (идемпотентность): применять ТОЛЬКО к идемпотентным вызовам — read'ам либо мутациям с ключом идемпотентности. codes.Unavailable может прийти ПОСЛЕ того, как peer уже применил мутацию (обрыв на ответе), поэтому слепой retry не-идемпотентной мутации (Create/Allocate без idempotency-key) рискует задвоить эффект. Для не-идемпотентных мутаций используйте отдельный idempotency-механизм.

Types

This section is empty.

Jump to

Keyboard shortcuts

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