Skip to content

Fix concurrent token refresh race condition#190

Merged
liplus-lin-lay merged 1 commit into
mainfrom
189-fix-concurrent-refresh-race
Apr 14, 2026
Merged

Fix concurrent token refresh race condition#190
liplus-lin-lay merged 1 commit into
mainfrom
189-fix-concurrent-refresh-race

Conversation

@liplus-lin-lay
Copy link
Copy Markdown
Member

Summary

Refs #189

WebSocket起動と最初のツール呼び出しが同時に refreshAccessToken() を呼ぶ競合状態を修正。_refreshLock プロミスで同時リフレッシュを直列化し、Workerへのリクエストを1回に制限する。

  • _refreshLock 変数を追加し、リフレッシュ中は同じプロミスを共有
  • 2番目以降の呼び出し元は既存のリフレッシュプロミスを await
  • finally ブロックでロックを確実に解放

Test plan

  • セッション再起動後、WebHook MCP の認証が自動的に成功することを確認
  • 複数ターン後もトークンが有効であることを確認
  • ~/.github-webhook-mcp/oauth-tokens.json の refresh_token が一貫していることを確認

🤖 Generated with Claude Code

WebSocket起動と最初のツール呼び出しが同時にrefreshAccessToken()を
呼ぶ競合状態を修正。_refreshLockプロミスで直列化し、Workerへの
リフレッシュリクエストを1回に制限。孤児refresh tokenによる
セッション跨ぎの認証切れを防止。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@liplus-lin-lay liplus-lin-lay linked an issue Apr 14, 2026 that may be closed by this pull request
@liplus-lin-lay liplus-lin-lay merged commit 3485d4c into main Apr 14, 2026
3 checks passed
@liplus-lin-lay liplus-lin-lay deleted the 189-fix-concurrent-refresh-race branch April 14, 2026 15:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix concurrent token refresh race condition causing auth expiry

2 participants