Add configurable maxBackoffMs for rate limit retries#103
Open
jeffreyparker wants to merge 9 commits intomasterfrom
Open
Add configurable maxBackoffMs for rate limit retries#103jeffreyparker wants to merge 9 commits intomasterfrom
jeffreyparker wants to merge 9 commits intomasterfrom
Conversation
Allow callers to configure the maximum backoff threshold for 429 retry logic via a new useMaxBackoffMs() builder method. Setting maxBackoffMs to 0 disables retries entirely. The default (32000ms) preserves existing behavior.
- Reject negative values in both useMaxBackoffMs() builder method and setMaxBackoffMs() setter with IllegalArgumentException - Clarify Javadoc that maxBackoffMs is the base backoff threshold before jitter (actual sleep includes up to 1000ms random jitter) - Add test for negative value rejection
…erver Tests use a real HTTPS server (OkHttp MockWebServer + okhttp-tls) to verify end-to-end retry behavior: single retry with success, exhausting the default 32s max backoff, a custom max backoff limit, and zero backoff disabling retries.
…tion Clarify that values below INITIAL_BACKOFF_MS (1000ms) also effectively disable retries, and document the ClientBuilder visibility limitation that prevents fluent method chaining from outside the package.
Rename HttpRateLimitRetryIntegrationTest to *IT (failsafe naming convention) and add maven-failsafe-plugin so socket-binding tests run in the integration-test phase instead of the default test phase.
The testRepeatRetryAfterRateLimit test already covers default backoff behavior (7 requests = 32s max) through observable retry count.
3f7dd60 to
a481565
Compare
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
useMaxBackoffMs()method to theClientBuilderso callers can configure the maximum backoff threshold for 429 (rate limit) retry logic.maxBackoffMsto0disables retries entirely.Note: The
response.close();line fixes a preexisting issue where retries hold the connection open instead of closing them, potentially exhausting the pool.Test plan
testMaxBackoffZeroDisablesRetry— verifies that setting maxBackoff to 0 returns the 429 immediately with no retries.testMaxBackoffCustomLimit— verifies that a custom limit (4000ms) caps retries correctly.