Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 6 additions & 12 deletions src/lib/github.ts
Original file line number Diff line number Diff line change
Expand Up @@ -675,19 +675,12 @@ export const fetchActivity = cache(async function fetchActivity(
const pages = [1, 2, 3];
const allEvents: GitHubEvent[] = [];

const promises = pages.map((page) =>
restGet<GitHubEvent[]>(
`/users/${encodeURIComponent(username)}/events/public?per_page=100&page=${page}`,
token
)
);

// Suppress unhandled promise rejections for subsequent pages if we break early or throw
promises.forEach((p) => p.catch((e) => logger.error("Event fetch promise rejected:", e)));

for (const p of promises) {
for (const page of pages) {
try {
const events = await p;
const events = await restGet<GitHubEvent[]>(
`/users/${encodeURIComponent(username)}/events/public?per_page=100&page=${page}`,
token
);
allEvents.push(...events);
if (events.length < 100) break;
} catch (error) {
Expand All @@ -697,6 +690,7 @@ export const fetchActivity = cache(async function fetchActivity(
) {
throw error;
}
logger.error("Event fetch failed:", error);
break;
}
}
Comment on lines 678 to 696

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 アクティブユーザーでの直列取得によるレイテンシ増加

変更前のコードは3ページ分のリクエストを並行起動してから順次 await していたため、300件のイベントを持つアクティブユーザーでは3リクエストがほぼ同時に処理されていました。変更後は完全な直列実行になるため、すべてのページが100件を返す場合のレイテンシが最大3倍になります。fetchActivity は React の cache() でラップされているためリロード後は緩和されますが、初回レンダリング時にはこの差が現れます。不要なリクエストを避けるという目的自体は正しいですが、並列性を維持しつつ早期終了する別の選択肢(例: Promise.all + 結果検査)と比較検討した経緯があれば教えてください。

Prompt To Fix With AI
This is a comment left during a code review.
Path: src/lib/github.ts
Line: 678-696

Comment:
**アクティブユーザーでの直列取得によるレイテンシ増加**

変更前のコードは3ページ分のリクエストを並行起動してから順次 `await` していたため、300件のイベントを持つアクティブユーザーでは3リクエストがほぼ同時に処理されていました。変更後は完全な直列実行になるため、すべてのページが100件を返す場合のレイテンシが最大3倍になります。`fetchActivity` は React の `cache()` でラップされているためリロード後は緩和されますが、初回レンダリング時にはこの差が現れます。不要なリクエストを避けるという目的自体は正しいですが、並列性を維持しつつ早期終了する別の選択肢(例: `Promise.all` + 結果検査)と比較検討した経緯があれば教えてください。

How can I resolve this? If you propose a fix, please make it concise.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Expand Down
Loading