Skip to content

fix: 一部の参加者がルームに表示されないバグを修正#34

Merged
ef81sp merged 7 commits intomainfrom
fix-issue-32
Jan 29, 2026
Merged

fix: 一部の参加者がルームに表示されないバグを修正#34
ef81sp merged 7 commits intomainfrom
fix-issue-32

Conversation

@ef81sp
Copy link
Copy Markdown
Owner

@ef81sp ef81sp commented Jan 29, 2026

Summary

  • Deno Deploy複数インスタンス環境で、同時参加時に一部の参加者が表示されない問題を修正
  • handleJoinRoomのatomic操作を統合し、versionstampチェックによる楽観的ロックを実装
  • WebSocket auth完了時に最新Room情報を送信する機能を追加
  • 競合発生時の指数バックオフ + ジッターによるリトライ機構を実装
  • クライアント側でも503エラー時のリトライを追加

Test plan

  • deno test backend/ - 59テストすべてパス
  • ローカルで複数ブラウザからの同時参加テスト
  • Deno Deploy環境での複数人同時参加テスト

Fixes #32

🤖 Generated with Claude Code

ef81sp and others added 7 commits January 29, 2026 19:34
同時参加時の競合状態を検証するためのテストを追加。
現状では競合状態により一部の参加者が失われることを確認。

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 3つに分離していたatomic操作を単一のatomic操作に統合
- versionstampチェックによる楽観的ロックを実装
- 競合発生時は最大3回までリトライ
- 複数インスタンス環境での同時参加時に参加者が失われる問題を修正

Fixes #32

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
sendCurrentRoomState関数のテストを追加:
- Room情報を正しく送信することを確認
- userTokenがnullの場合は送信しないことを確認

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- sendCurrentRoomState関数を追加
- auth完了時に即座にKVから最新Room情報を取得して送信
- REST APIレスポンスとKV更新のタイミングの差異を解消

Fixes #32

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- MAX_RETRIESをJOIN_ROOM_MAX_RETRIESとしてファイル先頭に定数化
- userToken初期化をnull合体演算子で簡潔化
- userTokenInfo生成ロジックを単一のオブジェクト生成に統合

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- リトライ回数を3→5に増加
- 指数バックオフ: 10ms, 20ms, 40ms, 80ms, 160ms
- ジッター: ランダムな揺らぎで同時リトライを回避
- 高負荷時の連続競合を軽減

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- fetchWithRetry: 503エラー時に指数バックオフでリトライ(最大2回)
- joinRoomApiでリトライ機能を使用
- エラーメッセージを改善(再読み込みを促す)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@ef81sp ef81sp merged commit bfb0110 into main Jan 29, 2026
1 of 2 checks passed
@ef81sp ef81sp deleted the fix-issue-32 branch January 29, 2026 11:59
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.

一部の参加者がルームに表示されないことがある

1 participant