Summary
Several handlers are async def but do long blocking I/O directly (not via threadpool), stalling every other in-flight request - including the auth-exempt /health probe Electron polls.
Locations
Failure scenario
User triggers a save backup of a large prefix -> the whole API is unresponsive for the duration -> the UI hangs and concurrent requests (health poll, other panels) block until the zip finishes.
Fix
Make these def handlers (FastAPI runs them in the threadpool) or await run_in_threadpool(...).
Summary
Several handlers are
async defbut do long blocking I/O directly (not via threadpool), stalling every other in-flight request - including the auth-exempt/healthprobe Electron polls.Locations
src/game_setup_hub/api/routes/saves.py:25-51- backup zips up to 4 GB / 50k files synchronouslyroutes/utility.py:185-230(prefix info / delete,shutil.rmtree)routes/games.py:33-44(discover_games()filesystem scan)Failure scenario
User triggers a save backup of a large prefix -> the whole API is unresponsive for the duration -> the UI hangs and concurrent requests (health poll, other panels) block until the zip finishes.
Fix
Make these
defhandlers (FastAPI runs them in the threadpool) orawait run_in_threadpool(...).