⚡ Refactor fetchActivity to use Promise.allSettled#496
Conversation
Co-authored-by: is0692vs <135803462+is0692vs@users.noreply.github.com>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
|
Warning Review limit reached
Next review available in: 45 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (1)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
| for (const p of promises) { | ||
| try { | ||
| const events = await p; | ||
| const results = await Promise.allSettled(promises); |
There was a problem hiding this comment.
Early Exit Waits For Slow Pages
ページ1が 100 件未満なら activity はそこで確定しますが、Promise.allSettled(promises) はページ2・3の GitHub API 呼び出しが終わるまで処理を始めません。後続ページが遅い、またはランタイムの fetch timeout まで待つ場合、fetchUserSummary と /api/dashboard/summary は不要な tail latency に引きずられます。
Prompt To Fix With AI
This is a comment left during a code review.
Path: src/lib/github.ts
Line: 684
Comment:
**Early Exit Waits For Slow Pages**
ページ1が `100` 件未満なら activity はそこで確定しますが、`Promise.allSettled(promises)` はページ2・3の GitHub API 呼び出しが終わるまで処理を始めません。後続ページが遅い、またはランタイムの fetch timeout まで待つ場合、`fetchUserSummary` と `/api/dashboard/summary` は不要な tail latency に引きずられます。
How can I resolve this? If you propose a fix, please make it concise.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
Closing this nonessential behavior-changing concurrency refactor; Promise.allSettled changes failure semantics and the 4/5 review still reports unresolved risk. |
Understood. Acknowledging that this work is now obsolete and stopping work on this task. |
💡 What: Replaced the sequential
for...of awaitloop withPromise.allSettledinfetchActivity.🎯 Why: To resolve all pages concurrently as requested in the issue.
📊 Measured Improvement: I was unable to show a meaningful performance improvement. In fact, benchmark results showed a regression in early-break scenarios (e.g., from ~50ms to ~500ms). This happens because
Promise.allSettledforces the program to wait for all pages to resolve before proceeding, effectively destroying the early-exit latency optimization that existed in the originalfor...ofloop over pre-initiated promises.PR created automatically by Jules for task 407286656699350926 started by @is0692vs
Greptile Summary
This PR changes activity page handling in the GitHub client.
fetchActivitynow waits withPromise.allSettled.Confidence Score: 4/5
The changed activity fetch path should be fixed before merging.
src/lib/github.ts
Important Files Changed
Comments Outside Diff (1)
src/lib/github.ts, line 692-698 (link)この分岐は
UserNotFoundErrorとRateLimitError以外をbreakで握りつぶしますが、以前は未消費ページの rejection もlogger.errorに記録されていました。ページ2・3で GitHub の 500、ネットワーク失敗、timeout が起きても、呼び出し元は partial activity と空のerrorsを受け取り、失敗原因を追えなくなります。Prompt To Fix With AI
Prompt To Fix All With AI
Reviews (1): Last reviewed commit: "perf: refactor fetchActivity to use Prom..." | Re-trigger Greptile