branch_worker: introduce can_do_sync() check #11
Merged
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.
Github has a limit on the number of tokens used by an app, which is 5k/1h for a free-tier org [1].
In BPF CI due to number of pending PRs, we regularly get very close to hitting the limit (remaining < 500) and have relevant alerts set up.
Introduce can_do_sync() method to BranchWorker that will check if there is enough remaining tokens to run through the sync_patches. Enough is defined by MIN_REMAINING_GITHUB_TOKENS, which is currently a constant for simplicity.
In case the number of remaining tokens is too low, the sync_patches will simply be skipped for the worker. Effectively KPD will wait until github will refresh the limit without crashing.
[1] https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#primary-rate-limit-for-authenticated-users