Two overlapping /diffusion/start requests can interleave between the is_active() check and the reservation, so reserve() itself must reject a second reservation atomically. Otherwise both callers reserve, both free the GPU's resident chat or image model, and the loser only 409s after the eviction -- the evict-then-fail the reservation exists to prevent. reserve() now raises under the lock if a start is already reserved or a job is already running. |
||
|---|---|---|
| .. | ||
| data_recipe | ||
| export | ||
| inference | ||
| rag | ||
| training | ||
| __init__.py | ||
| _torchao_stub.py | ||
| import_guards.py | ||
| tool_healing.py | ||