AOSSIE-Org / AOSSIE-Org/DebateAI

race condition, we need to change the logic so users are not removed from the pool until the room is successfully created in the database.

未关闭
#301 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
TypeScript
星标
84
派生
198
平均合并
2 天 19 小时
30 天内合并 PR
30

描述

**Location:** `backend/services/matchmaking.go`
### Suppose
**Issue** explained :

- Alice and Bob are waiting in line outside a popular restaurant (The Matchmaking Pool).
- (The System) sees that Alice and Bob are a perfect match for a 2-person table.
- To ensure no other host grabs them, the Maître D' immediately crosses their names off the waiting list (Removes from Pool).
- He then walks them to the private dining room.
- The Problem: When they arrive, the door is jammed, or the table has collapsed (Database/Room Creation Error).
- The (The System) can't seat them, so he leaves them in the hallway.
- The Limbo: Alice and Bob go back to the front desk, but their names are already crossed off the list.
- The other staff think they are already eating.
- Alice and Bob stand in the lobby forever, never getting a table, but unable to get back in line.

### Fix Strategy: "Reserve" before "Remove"

- Add State: Add an IsMatching flag to the user struct.

- Reserve: In findMatch, set IsMatching = true (locking the users) instead of deleting them.

- Commit/Rollback: In createRoomForMatch, delete them on success, or reset IsMatching = false on failure.

@bhavik-mangla Please review the solution here #302

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。