Retry transient release/module downloads in smoke.sh - #37
Conversation
Run 34857588399 failed three lanes on three unrelated network blips: libmoq and moq-gst tarballs truncated mid-stream (gzip: unexpected end of file) and `go get` hit a sum.golang.org INTERNAL_ERROR stream reset. None of those paths retried, so one blip marked a client broken and failed its whole column. - fetch_tarball: curl --retry-all-errors (plain --retry skips partial transfers) to a file, then extract, shared by libmoq_fetch and the moq-gst fetch. Piping a truncated stream into `tar xz` left a half-extracted tree and an unhelpful error. - retry: bounded backoff helper; wraps the idempotent `go get` + `go mod tidy` before the single go build. - Release-list API queries retry as well. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 71fa6aa001
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| tag=$(curl -sf --retry 3 --retry-all-errors ${hdr[@]+"${hdr[@]}"} "https://api.github.com/repos/moq-dev/moq/releases?per_page=100" | | ||
| jq -r '.[].tag_name' | grep '^libmoq-v' | head -1) |
There was a problem hiding this comment.
Write the retried release response to a file
When this API transfer fails after emitting a partial response, --retry-all-errors writes the next attempt into the same pipe, so jq receives the truncated JSON concatenated with the retried response and cannot extract a tag; the libmoq client is therefore still marked broken after a recoverable network blip. In the curl 8.5.0 CLI documentation inspected via curl --manual, --retry-all-errors explicitly warns that pipe output “is not reset” before retries and may contain duplicate data. Download this response with -o, as the moq-gst query already does, before parsing it.
Useful? React with 👍 / 👎.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. WalkthroughThe smoke script adds retry and tarball-fetch helpers. GitHub release API requests now retry. The Priority: ⬇️ Low Merge Risk: ⚪ Minimal · up to The retry changes preserve failure handling for smoke-test setup and do not show an unresolved merge-blocking risk. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches✨ Simplify code
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Fixes the three red lanes in https://github.com/moq-dev/smoke/actions/runs/34857588399, which were three unrelated network blips (moxygen's FAIL is the known
continue-on-errorone):gzip: stdin: unexpected end of file)go get→sum.golang.org ... stream error: INTERNAL_ERRORNone of those paths retried, so a single blip marked the client broken and failed its whole column.
Changes
fetch_tarball:curl --retry 5 --retry-all-errors(plain--retrydoes not cover partial transfers, which is exactly what the CDN produced) downloads to a file, thentarextracts. Shared bylibmoq_fetchand the moq-gst fetch. Previously a truncated stream piped intotar xzleft a half-extracted tree behind.retry: small bounded-backoff helper; wraps the idempotentgo get+go mod tidy(3 attempts) before the singlego build.--retry 3.freshness.shstill passes (thego get "github.com/moq-dev/moq-go@latest"andgrep '^libmoq-v'patterns it checks are unchanged); shellcheck/shfmt clean.🤖 Generated with Claude Code
(written by Claude Opus 5)