- 313 new markdown files created - 30 relationships embedded - 313 entries indexed - State initialized with usage data
1.3 KiB
1.3 KiB
| id | type | title | tags | importance | confidence | created | updated | relations | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 9b70e3d5-d0b6-48c5-88d0-2fbc36f4fd4d | problem | Play lock never released on exception - causes permanent user lockout |
|
0.95 | 0.8 | 2026-02-04T15:02:48.444623+00:00 | 2026-02-04T15:02:48.444623+00:00 |
|
The play locking system in checks_log_interaction() sets play.locked=True and commits it (logic_gameplay.py:1262-1264), but if an exception occurs during command processing, the lock is NEVER released. The only unlock is in complete_play() (line 1015) which only runs on successful completion. This caused 13 plays to be permanently locked across multiple games, completely blocking users. Production incident on 2026-02-04: play 103546 in game 1346 was stuck locked, blocking active user. Error message claims 'auto-unlock will trigger' but that functionality doesn't exist. Root cause: no try/finally block or exception handling to release lock on failure. Manual fix: UPDATE play SET locked=false WHERE locked=true AND complete=false.