Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Make model download cancellation asynchronous

Đang mở
#115 0 bình luận 0 reaction 1 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 5 ngày

@ckelseynv đang làm issue này rồi.

Từ ngày 23/9/2026.

Đánh giá

Issue này chưa được đánh giá.

Mô tả

enhancement

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".
Ngôn ngữ chính
Go
Star
1.6k
Fork
266
Merge trung bình
3 ngày 6 giờ
Pull request đã merge (30 ngày)
22

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của NVIDIA/Personal-AI-Router

Tất cả issue của NVIDIA/Personal-AI-Router

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.