Skip to content

xds-client/retry: add jitter to connection backoff#2738

Open
W4lspirit wants to merge 1 commit into
grpc:masterfrom
W4lspirit:xds-client-reconnect-backoff-jitter
Open

xds-client/retry: add jitter to connection backoff#2738
W4lspirit wants to merge 1 commit into
grpc:masterfrom
W4lspirit:xds-client-reconnect-backoff-jitter

Conversation

@W4lspirit

Copy link
Copy Markdown

Motivation

The reconnect backoff was fully deterministic: every client that lost its xDS stream at the same time (control-plane restart or a network blip) computed the identical delay schedule and retried in lockstep. That synchronized retry storm hammers the management server right when it's least able to absorb it.

Solution

Randomize each delay by a configurable factor per gRFC A6 so clients spread their reconnects across a window instead of colliding. Default jitter is 0.2 (±20%) ; with_jitter validates the factor is in [0.0, 1.0], and 0.0 restores the old deterministic behavior.

Random

I hesitated between rand crate and fastrand, in the end I fallback to the same dep grpc is already using for the jitter in named_resolution

Randomize each backoff delay by a configurable factor (gRFC A6) so
reconnecting clients don't retry in lockstep.

Default jitter is 0.2 (±20%); `with_jitter` validates the factor is in
[0.0, 1.0] and 0.0 disables it.
Adds the `rand` dependency.
@gu0keno0
gu0keno0 requested a review from YutaoMa July 17, 2026 15:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant