oxidecomputer / oxidecomputer/buildomat

artifact download URL is not resumable

Open
#69 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
72
Forks
5
PR merge metrics
No merged PRs in 30d

Description

From this buildomat run:
https://github.com/oxidecomputer/omicron/runs/38078608713

I wanted to download /work/repo.zip, which is:
https://buildomat.eng.oxide.computer/wg/0/artefact/01JND89XBVFYKYFJXD6JFDA8XR/i361qB3lfswvUlvUnk2I8TAIInnC6R0aVLrufUE3xiKZ7Jpm/01JND8A832Z6DMSNDE05HMFHVH/01JNDBQH91APJC86M538P066PN/repo.zip

That seems to reliably fail to download just after the 1 GiB mark (a separate bug):

$ curl -O https://buildomat.eng.oxide.computer/wg/0/artefact/01JND89XBVFYKYFJXD6JFDA8XR/i361qB3lfswvUlvUnk2I8TAIInnC6R0aVLrufUE3xiKZ7Jpm/01JND8A832Z6DMSNDE05HMFHVH/01JNDBQH91APJC86M538P066PN/repo.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 50 2039M   50 1030M    0     0  5613k      0  0:06:12  0:03:07  0:03:05 5476k
curl: (92) HTTP/2 stream 1 was not closed cleanly: INTERNAL_ERROR (err 2)

I tried to retry it but:

$ curl -C- -O https://buildomat.eng.oxide.computer/wg/0/artefact/01JND89XBVFYKYFJXD6JFDA8XR/i361qB3lfswvUlvUnk2I8TAIInnC6R0aVLrufUE3xiKZ7Jpm/01JND8A832Z6DMSNDE05HMFHVH/01JNDBQH91APJC86M538P066PN/repo.zip
** Resuming transfer from byte position 1080246028
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (33) HTTP server does not seem to support byte ranges. Cannot resume.

This looks similar to #31, but the fix for that looks like it was fixing a different endpoint (/public/file/...).

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with the artifact URL and curl -C-, then compare this endpoint with the /public/file/... endpoint discussed in #31. Identify how the artifact download responds to byte-range requests and verify that an interrupted transfer can resume successfully without changing the requested URL.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.