mirror of
https://github.com/mudler/LocalAI.git
synced 2026-09-12 22:33:54 -04:00
The abandoned-load sweeper treated a replica row with no load job as abandoned. Only the request path creates load jobs; the reconciler's own scale-up loads a replica without one. So any scale-up that ran past the five-minute grace period was deleted mid-transfer, which for a multi-gigabyte checkpoint is every time. The replica never finished anywhere, and the reconciler kept re-placing it, so it looked like one replica hopping between nodes instead of a model reaching its replica count. A row with no job is now reclaimed only once its node stops being healthy, which is the case the sweeper was written for: a worker that dropped out mid-transfer. A job that failed or stopped heartbeating still proves abandonment on its own. Every uncertain case leaves the slot held. Signed-off-by: Ettore Di Giacinto <mudler@localai.io> Assisted-by: Claude Code:claude-opus-5 [golangci-lint]