Feat/backoff jitter strategies#666
Merged
Baskarayelu merged 4 commits intoJun 29, 2026
Merged
Conversation
feat(metrics): restrict /metrics endpoint to cluster CIDRs
…nds tests
Extends utils/backoff.ts with an injectable RNG and configurable
JitterStrategy ('none' | 'full' | 'equal' | 'decorrelated').
Adds decorrelated jitter to retryPolicy.ts RetryJitterStrategy.
Adds fast-check property tests proving each strategy stays within
its theoretical bounds.
Default behavior is unchanged (full jitter in backoff.ts).
No breaking changes to retryPolicy.ts callers.
|
@shogun444 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
Closed
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #641
This PR adds configurable jitter strategies to the retry backoff helpers while preserving the existing default behavior. It also introduces deterministic testing via injectable RNGs and property-based tests to verify the mathematical bounds of each strategy.
Changes
Added configurable jitter strategies:
nonefullequaldecorrelatedExtended
BackoffOptionswith:jitterrandomFn(defaults toMath.random)Added state tracking for decorrelated jitter using the previous delay.
Extracted backoff delay calculation into a dedicated helper for clarity.
Extended
RetryJitterStrategywithdecorrelated.Added decorrelated jitter support to
getBackoffDelayMs()while keeping existing callers backward compatible.Tests
Added deterministic and property-based tests covering:
[0, cap][cap / 2, cap]Validation
npm run test -- backoff retryPolicy(36/36 passing)npm run buildnpm run lintNo breaking API changes were introduced. Existing callers continue using the current default (
full) jitter strategy.