refactor: Parallelize sequential getCommentReactions API calls when checking multiple comments#211
Open
frostyardyeti[bot] wants to merge 1 commit intomainfrom
Open
refactor: Parallelize sequential getCommentReactions API calls when checking multiple comments#211frostyardyeti[bot] wants to merge 1 commit intomainfrom
frostyardyeti[bot] wants to merge 1 commit intomainfrom
Conversation
Replace sequential for...of + await loops with Promise.all() for independent reaction checks on multiple comments. This reduces wall-clock time proportionally to the number of comments. Parallelized locations: - findUnreactedHumanComments in issue-refiner.ts - classifyIssue reaction loop in issue-auditor.ts - Both inline and issue comment reaction checks in getPRReviewComments Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Several jobs check reactions on comments sequentially in a loop, making one API call per comment:
src/jobs/issue-refiner.ts:489-503(findUnreactedHumanComments) — iterates withfor...ofandawaits eachgetCommentReactions()callsrc/github.ts:1142-1157(buildIssueContext) — same sequential patternsrc/jobs/issue-auditor.ts:52-65(classifyIssue) — same patternsrc/jobs/plan-reviewer.ts:185-194— single call per issue (less impactful)For issues with many human comments (5-10+), this creates unnecessary serial latency since each call is independent and already deduplicated by the TTL cache. Using
Promise.all()(or a small batch likePromise.all(comments.map(...))) for the reaction checks would reduce wall-clock time proportionally to the number of comments. ThefindUnreactedHumanCommentsfunction in issue-refiner.ts is the best starting point since it's called on every issue scan and has the clearest loop structure.Automated improvement by yeti improvement-identifier