Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

artifact download URL is not resumable #69

Open
davepacheco opened this issue Mar 3, 2025 · 3 comments
Open

artifact download URL is not resumable #69

davepacheco opened this issue Mar 3, 2025 · 3 comments

Comments

@davepacheco
Copy link

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/...).

@iximeow
Copy link
Member

iximeow commented Mar 3, 2025

oh, yeah, variety::basic::artefact doesn't get or pass along range headers which are presumably present and ignored in github/server/src/http.rs' async fn artefact. if that were plumbed through i think range requests would work right on this endpoint too and -C - would be happy.

@jclulow
Copy link
Collaborator

jclulow commented Mar 5, 2025

I have reworked this a bit, and have been able to get range requests to work for objects that have already been archived to the object store. I believe passing a range request into progenitor is still a work in progress (see oxidecomputer/progenitor#745 and oxidecomputer/progenitor#750) so range requests don't yet work before the range request is complete.

I've also reworked the github frontend (which is what you're downloading from here) so that it can request the file directly from S3, rather than having to ask the backend API server to proxy it from S3. My hope is that this will cut down on the reliability issues with the actual transfers.

@jclulow
Copy link
Collaborator

jclulow commented Mar 5, 2025

I've been able to grab the whole file a couple of times at the office, at least:

$ 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
100 2039M  100 2039M    0     0  53.4M      0  0:00:38  0:00:38 --:--:-- 63.7M

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

No branches or pull requests

3 participants