Repository navigation
fix: add full jitter to webhook retry delays - #611
Richard-tobi wants to merge 1 commit into
Conversation
46cca4f to
069fb62
Compare
|
Warning Possible malicious code: please review before merging. An automated security scan flagged files in this pull request that appear to contain malicious code. Code like this can run automatically when a project is opened in an editor or its dependencies are installed, so it could compromise the machine of anyone who checks out this branch. Automated scans can be wrong, so this may be a false positive. Maintainers: please review the flagged files carefully before merging, on GitHub in your browser rather than by checking out the branch. The malicious part is often hidden far off to the right of an ordinary-looking line, so scroll sideways through each file. @Richard-tobi: this pull request adds or changes these files, possibly without your knowledge. Malware like this spreads by adding itself to repositories on machines it has infected, so your machine might be compromised. Please undo these changes in this pull request, and don't open or run other projects on that machine until you've checked it. Flagged files at commit Only merge once you're confident these files are safe. ℹ️ Posted automatically by Drips Wave. Questions? Contact support@drips.network. |
Overview
This PR adds full jitter to webhook retry backoff in
src/alerts/delivery.ts, so deliveries that fail at the same moment no longer retry in lockstep. The randomness source is injectable, keeping the test deterministic, and the existing retry count, attempt cap, and "4xx is not retried" rule are unchanged.Related Issue
Changes
🔁 Retry Backoff Jitter
[MODIFY]
src/alerts/delivery.tsretryDelayMsnow applies full jitter — a random value between zero and the computed exponential delay — instead of returning the deterministic2^(attempt-1) * 1000value.Math.random), so callers and tests can supply a deterministic function.[ADD]
src/__tests__/deliveryFailures.test.tsVerification Results
retryDelayMsreturns a random value in[0, computedDelay]deliveryFailures.test.tswith injected randomnessMath.randomCloses #341