retry

package
v1.3.1 Latest Latest
Warning

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

Go to latest
Published: Sep 10, 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