Repository navigation
fix(server): PR sync reads share GitHub requests again on busy servers #28422
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
juliusmarminge
merged 8 commits into
pingdotgg:main
from
only21mil:fix/pr-batch-starvation
Nov 12, 2026
+189
−20
Merged
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
64759ec
fix(server): PR sync reads batch again on a busy server
only21mil 4c7e6cb
fix(server): PR sync keeps hosts without batched reads at the old width
only21mil d3d91b3
test(server): gate the PR sync width test instead of sleeping
only21mil 42d34b9
fix(server): resolve each host's batching beside the others
only21mil 30d132a
fix(server): PR sync checks each group's due state when its read can …
only21mil a79ca62
fix(server): PR sync judges a group due once it holds a shared slot
only21mil fb6031e
Merge branch 'main' into fix/pr-batch-starvation
only21mil 6b45fc9
Merge remote-tracking branch 'origin/main' into fix/pr-batch-starvation
juliusmarminge File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
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
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Recheck sibling groups that a read flags after their due check.
A group can pass
isDuebefore a sibling read adds it toretryStacks(line 584). The sweep makes one pass over each host's groups and does not revisit a group after itsreadIfDuereturns. The flagged group keeps its stale stack until a later sweep processes it.The check after the permit (lines 641-644) covers only flags set while a group waits for a slot. The pre-change flat sweep already had this gap for its first 25 groups. The 100-wide batched pool extends it to up to 100 groups per host.
The sibling test at lines 1274-1331 sets
batchesReads: () => false(line 1305). Its other-host reads hold the shared slots, so#50cannot run until after#1has flagged it. A batched variant can expose the gap. With the harness default oftrue(line 232),#50can be checked first and skipped, soassert.include(read, 50)(line 1327) can fail.Re-check the host's groups after its first pass, for keys that
retryStacksgained during that pass, and run them through the same pool. Add a batched case for the flag-after-check path.