Make model download cancellation asynchronous
I maintainer di solito rispondono entro 5 giorni
@ckelseynv ci sta già lavorando.
Dal 23/9/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
engine:cancel-pull and engine:remote-cancel-pull block until the download has stopped and its partial files are settled. That single decision is what forces every layer above them to carry a budget: the desktop picks 90s, the terminal interface picks 35s, the engine manager's peer client needs a separate long-header pool so a peer that takes minutes is not cut off, and each of those numbers has to be justified against the others.
It also sits awkwardly with state-and-auto-start.mdc, which says engine and model commands are fire-and-forget mutations whose outcome arrives on the push bus.
Proposal
Make cancellation fire-and-forget. The request acknowledges that the cancel was accepted; the terminal state arrives on the existing progress feed, the same way a pull's own completion does. Callers stop waiting, and most of the budgets in #114 stop being load-bearing.
Prerequisite
There is one non-obvious blocker. trackedPull routes a same-key retry to joinPull, so a retry issued while the previous download is still cleaning up would join the dying pull and receive its cancelled result rather than starting a new download. Today that is masked, because the caller is still blocked on the cancel and cannot retry yet. Removing the block exposes it.
So a retry arriving during cleanup has to start a new download rather than join the one being torn down. That ordering needs solving before, or alongside, the change — not after.
Worth preserving
Two behaviours from #111 should survive the redesign, because both were bugs that had to be fixed once already:
- A cancel must not overtake the pull it names. The remote path holds a cancel until the peer has accepted the matching pull; the local path claims the pull. A cancel that arrives first is answered as a cancel for nothing and leaves the transfer running.
- A cancel that stops being awaited must remain retryable, and the row must stay in Canceling rather than rolling back to Downloading. Asynchronous delivery makes the first half easier and the second half more important, since there is no longer a reply to distinguish "accepted" from "lost".
- Lingua principale
- Go
- Stelle
- 1.6k
- Fork
- 266
- Merge medio
- 3g 15h
- PR unite (30g)
- 23
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di NVIDIA/Personal-AI-Router
-
enhancement
Difficoltà 4/5 Più di una settimana Idoneità per principianti 12/100
NVIDIA/Personal-AI-Router#162 ·
I maintainer di solito rispondono entro 5 giorni
-
enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
NVIDIA/Personal-AI-Router#154 · 1 commento ·
I maintainer di solito rispondono entro 5 giorni
-
[Feature]: [Ollama] Alert the user about model pull failuresForse già presa @ckelseynv l’ha presa 2 giorni fa. Apertaenhancement
Difficoltà 3/5 1-2 giorni Idoneità per principianti 56/100
NVIDIA/Personal-AI-Router#152 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 5 giorni
-
[Bug]: /v1/responses bypasses model-owner filtering in the Ollama proxyForse già presa @ilaigold l’ha presa 3 giorni fa. Aperta
Difficoltà 3/5 Mezza giornata Idoneità per principianti 84/100
NVIDIA/Personal-AI-Router#146 ·
I maintainer di solito rispondono entro 5 giorni
-
Derive the model download and cancellation timeouts from measurementForse già presa @ckelseynv l’ha presa 19 giorni fa. Apertaenhancement
NVIDIA/Personal-AI-Router#114 · 1 assegnatario ·
I maintainer di solito rispondono entro 5 giorni
Tutte le issue di NVIDIA/Personal-AI-Router
Issue simili
-
product/backlog
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
TencentBlueKing/bk-nodemgr#3645 ·
I maintainer di solito rispondono entro 1 giorno
-
docs(prompt): filer socket fragment hardcodes an issue-intent cap of 8 that Chore runs overrideApertaagent-butler-finding chore
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
jordansmall/spindrift#5128 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 84/100
I maintainer di solito rispondono entro 2 giorni
-
License GOtome under Apache 2.0 instead of AGPL-3.0Forse già presa @praetorianer777 l’ha presa oggi. Apertaarea:workflow documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
praetorianer777/GoTome#212 ·
I maintainer di solito rispondono entro 1 giorno
-
ci: pin Go version in Build and Unit Test workflows (>=1.26.6 floats to 1.27.2 and breaks golangci-lint)Forse già presa @leninmehedy l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 87/100
hashgraph/solo-weaver#1255 ·
I maintainer di solito rispondono entro 1 giorno