Make model download cancellation asynchronous
Les mainteneurs répondent en général sous 5 jours
@ckelseynv y travaille déjà.
Depuis le 23/9/2026.
Évaluation
Cette issue n'a pas encore été évaluée.
Description
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".
- Langage dominant
- Go
- Étoiles
- 1.6k
- Forks
- 266
- Merge moyen
- 3 j 15 h
- PR mergées (30 j)
- 23
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de NVIDIA/Personal-AI-Router
-
enhancement
Difficulté 4/5 Plus d'une semaine Accessibilité débutants 12/100
NVIDIA/Personal-AI-Router#162 ·
Les mainteneurs répondent en général sous 5 jours
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
NVIDIA/Personal-AI-Router#154 · 1 commentaire ·
Les mainteneurs répondent en général sous 5 jours
-
[Feature]: [Ollama] Alert the user about model pull failuresPeut-être pris @ckelseynv l’a pris il y a 2 jours. Ouverteenhancement
Difficulté 3/5 1-2 jours Accessibilité débutants 56/100
NVIDIA/Personal-AI-Router#152 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 5 jours
-
[Bug]: /v1/responses bypasses model-owner filtering in the Ollama proxyPeut-être pris @ilaigold l’a pris il y a 3 jours. Ouverte
Difficulté 3/5 Une demi-journée Accessibilité débutants 84/100
NVIDIA/Personal-AI-Router#146 ·
Les mainteneurs répondent en général sous 5 jours
-
Derive the model download and cancellation timeouts from measurementPeut-être pris @ckelseynv l’a pris il y a 19 jours. Ouverteenhancement
NVIDIA/Personal-AI-Router#114 · 1 personne assignée ·
Les mainteneurs répondent en général sous 5 jours
Toutes les issues de NVIDIA/Personal-AI-Router
Issues similaires
-
[schema-coverage] elasticstack_kibana_security_detection_rulePeut-être pris @github-actions l’a pris aujourd’hui. Ouverteacceptance-tests phase-coding schema-coverage testing triaged
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
elastic/terraform-provider-elasticstack#5186 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
jaegertracing/jaeger#9830 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
apache/rocketmq-dashboard#6318 ·
Les mainteneurs répondent en général sous 5 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
GoogleCloudPlatform/opentelemetry-operations-collector#710 ·
Les mainteneurs répondent en général sous 1 jour