Skip to content

ci: resumable aria2 base-image pull + completeness check#14

Merged
CMGS merged 1 commit into
masterfrom
ci/aria2-pull
Jul 2, 2026
Merged

ci: resumable aria2 base-image pull + completeness check#14
CMGS merged 1 commit into
masterfrom
ci/aria2-pull

Conversation

@CMGS

@CMGS CMGS commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Why

tahoe setup rebuild (run 28612246711) died with QEMU "Image is corrupt": oras pull of the 35G :26-base hit ghcr's HTTP/2 PROTOCOL_ERROR 3/3 times (each ~8-10min), left a 19G truncated file, and pull_image's existence-only check accepted it. absorb/wait_cpu_idle never even ran.

Fix

Replace the single-stream oras pull with the resumable approach already validated on the testbed: resolve the qcow2 layer from the manifest, follow ghcr's 307 to the presigned blob URL, and aria2c -c -x8 it (8 connections + resume), re-resolving the ~10min-lived presigned URL each round until the file reaches the manifest's declared size — then qemu-img check before trusting it. Adds aria2 to the workflow apt install. oras push (upload) is unchanged.

Validation

bash -n + shellcheck clean. The aria2 resumable logic is the same one that pulled the full 35G blob on the testbed after single-stream curl/oras kept dropping.

oras pull streams a multi-GB base blob over one HTTP/2 connection; ghcr drops it
mid-stream with PROTOCOL_ERROR and oras leaves the partial file behind, which
pull_image's existence-only check accepted as valid -> QEMU "Image is corrupt"
on the next boot (tahoe setup rebuild died exactly this way after 3/3 failed
pulls left a 19G truncated file). Resolve the qcow2 layer, follow ghcr's 307 to
the presigned blob URL, and aria2 it with 8 connections + resume, re-resolving
the (~10min-lived) presigned URL each round until the file reaches the manifest's
declared size; then qemu-img check it. This is the resumable-pull approach
already validated on the testbed. Adds aria2 to the workflow's apt install.
@CMGS CMGS merged commit e9237af into master Jul 2, 2026
@CMGS CMGS deleted the ci/aria2-pull branch July 2, 2026 19:07
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.

1 participant