-
Notifications
You must be signed in to change notification settings - Fork 10
perf(stack): concurrent PR create/update with event coordination #960
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
base: main
Are you sure you want to change the base?
Conversation
Merge ProtectionsYour pull request matches the following merge protections and will not be merged until they are valid. 🔴 👀 Review RequirementsThis rule is failing.
🟢 🤖 Continuous IntegrationWonderful, this rule succeeded.
🟢 Enforce conventional commitWonderful, this rule succeeded.Make sure that we follow https://www.conventionalcommits.org/en/v1.0.0/
🟢 🔎 ReviewsWonderful, this rule succeeded.
🟢 📕 PR descriptionWonderful, this rule succeeded.
|
🧪 CI InsightsHere's what we observed from your CI run for df73baf. 🟢 All jobs passed!But CI Insights is watching 👀 |
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.
Pull request overview
This PR improves stack push throughput by running PR create/update operations concurrently while still preserving stacked dependencies via asyncio.Event coordination, and by limiting concurrent GitHub API calls with a semaphore.
Changes:
- Add per-change task objects (
ChangeTask) withasyncio.Eventsignaling to coordinate dependency PR number availability. - Execute create/update operations concurrently using
asyncio.gather, waiting only on the upstream PR number when needed. - Introduce a module-level semaphore limit (
MAX_CONCURRENT_API_CALLS = 5) to cap parallel GitHub API calls.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
22ec14d to
58fc08e
Compare
fefbb3a to
1cbd94f
Compare
58fc08e to
6f4a3a0
Compare
1cbd94f to
c3d227e
Compare
6f4a3a0 to
f5f761d
Compare
c3d227e to
68e5ef5
Compare
|
@jd this pull request is now in conflict 😩 |
Use asyncio.Event to coordinate PR operations - each change waits only for its dependency's PR number to be resolved. Updates with existing PRs signal immediately, allowing downstream tasks to proceed in parallel. Add semaphore to limit concurrent GitHub API calls (default 5). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Change-Id: I9f131b55d1f28415d56b8cc3d50e3be530481644 Claude-Session-Id: f00e6604-9d24-4f44-9781-1930247e9f49
68e5ef5 to
df73baf
Compare
Use asyncio.Event to coordinate PR operations - each change waits only
for its dependency's PR number to be resolved. Updates with existing PRs
signal immediately, allowing downstream tasks to proceed in parallel.
Add semaphore to limit concurrent GitHub API calls (default 5).
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com