Skip to content

feat: resumable NAR transfers (#225) - #378

Merged
DerDennisOP merged 8 commits into
mainfrom
feat/resumable-nar-transfers-225
Jun 11, 2026
Merged

feat: resumable NAR transfers (#225)#378
DerDennisOP merged 8 commits into
mainfrom
feat/resumable-nar-transfers-225

Conversation

@DerDennisOP

Copy link
Copy Markdown
Member

Closes #225 (scope A). Adds offset-based resume for NAR transfers in both directions via additive proto messages (NarStreamHeader / NarRequestResume / NarPushResume), on-disk .partial staging (server keyed by peer+hash, worker by hash), a stream-token guard for uploads, and a TTL GC sweep; server-side partials also replace the in-memory NarBuffers, retiring the #109 RAM-poison path.

Per the issue owner's call, resume rests on byte offsets + the existing file_size length check with no content hashing. Reconnection-continuity (B) and whole-upload-retry (C) remain follow-ups. End-to-end resume across a reconnect is covered by the NixOS VM suite in CI.

…uild_attempt cols (#225)

PartialStore std::fs ran inline on the proto socket task, stalling the runtime during push
bursts and hanging unrelated HTTP polls; rollup also queried build_finished_at, which the
Build/BuildAttempt split moved to build_attempt.
…metrics build_attempt cols

accept_chunk staged partials with blocking std::fs inline on the dispatch task; the durations
heatmap queried build_finished_at/build_time_ms, which the Build/BuildAttempt split moved to
build_attempt.
@DerDennisOP
DerDennisOP merged commit 61c9338 into main Jun 11, 2026
10 checks passed
@DerDennisOP
DerDennisOP deleted the feat/resumable-nar-transfers-225 branch June 11, 2026 19:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support resuming interrupted NAR transfers

1 participant