Describe the bug
The GitHub Docs now say:
Otherwise, wait for at least one minute before retrying. If your request continues to fail due to a secondary rate limit, wait for an exponentially increasing amount of time between retries, and throw an error after a specific number of retries.
There's also a whole complex list About secondary rate limits.
To Reproduce
Reach Secondary Quota Limits:
- At least 5 GET rps
- At least 1.4 POST rps
- Run until you get Secondary Quota Error:
"You have exceeded a secondary rate limit and have been temporarily blocked from content creation. Please retry your request again later"
Expected behavior
GitHub SHOULD return a retry-after header but it does not. So I've thought of a couple ideas:
- Make the GitHubConnectorResponseErrorHandler.isError() method public down the stack so users (me) can customize the behavior.
- Update the private GitHubAbuseLimitHandler.isError() logic to handle no
Retry-After header as described in the GitHub Docs. This may not be ideal because note everyone is running a long-running project like I am so they may not be OK with a default 1-minute sleep before throwing a RetryRequestException.
Desktop (please complete the following information):
- OS: MacOS
- JVM: Eclipse Temurin 21
- Spring-Boot 3.2.3
Additional context
BTW I'm using a GitHub Enterprise User Account accessing GH Enterprise resources so maybe that's why there's no Retry-After header?
Another Idea is related to rateLimitChecker.checkRateLimit(this, request.rateLimitTarget()); inside the GitHubClient.sendRequest method. If it could also pass the GitHub request instead of just the rateLimitTarget then I could configure more smart ratelimit checker which tracks api calls of differing "points" to reduce throughput of the 'create content' requests which GitHub limits much more heavily than Read requests.
Describe the bug
The GitHub Docs now say:
There's also a whole complex list About secondary rate limits.
To Reproduce
Reach Secondary Quota Limits:
Expected behavior
GitHub SHOULD return a retry-after header but it does not. So I've thought of a couple ideas:
Retry-Afterheader as described in the GitHub Docs. This may not be ideal because note everyone is running a long-running project like I am so they may not be OK with a default 1-minute sleep before throwing a RetryRequestException.Desktop (please complete the following information):
Additional context
BTW I'm using a GitHub Enterprise User Account accessing GH Enterprise resources so maybe that's why there's no
Retry-Afterheader?Another Idea is related to
rateLimitChecker.checkRateLimit(this, request.rateLimitTarget());inside the GitHubClient.sendRequest method. If it could also pass the GitHub request instead of just the rateLimitTarget then I could configure more smart ratelimit checker which tracks api calls of differing "points" to reduce throughput of the 'create content' requests which GitHub limits much more heavily than Read requests.