release processing is broken #384
Labels
No labels
bug
dependencies
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
refactor
rust
technical-debt
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
navicore/patch-seq#384
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
see https://github.com/navicore/patch-seq/actions/runs/23719491329 failed to publish all creates for 5.1.0
@claude can you investigate and solve this regression?
Claude finished @navicore's task in 8m 9s —— View job
Investigating Release Processing Regression
Root Cause Analysis
I cannot access the Actions run logs directly, but static analysis of
.github/workflows/release.ymlreveals two related issues.Issue 1:
sleep 60waits are too short for crates.io indexingThe publish sequence is:
cargo publish(without--no-verify) runs a verification build before uploading. That verification build extracts the crate into a temp directory, stripspath = "..."from dependencies, and tries to download them from crates.io. This means:seq-runtimeseq-core =5.x.xseq-compilerseq-runtime =5.x.x(build dep, embeds.a)seq-lspseq-compiler =5.x.xseq-replseq-compiler =5.x.x+vim-line =5.x.xcrates.io indexing can take 2–5 minutes under normal load — well beyond the 60-second wait. This is a known regression as crates.io has grown; the 60s that worked a year ago often doesn't today.
Issue 2: No wait after
seq-lspbeforevim-lineThere is no
sleepbetween seq-lsp and vim-line. Since they're independent this doesn't cause a dependency failure, but it means nothing gates the race between seq-lsp being published and seq-repl needing seq-compiler fully indexed.Fix Required (in
.github/workflows/release.yml)Option A (simple) — increase waits to 120s and add
--no-verify:Since
cargo test --workspaceis already run before publishing, the verification build incargo publishis redundant. Using--no-verifyskips the step that requires downloading dependencies from crates.io during publish.Change every
cargo publishline from:to:
And change every
sleep 60tosleep 120(belt-and-suspenders in case crates.io is slow for any reason other than the verification build).Option B (robust) — poll until indexed:
Replace each fixed
sleep 60with a polling loop. For example:This polls every 30s for up to 15 minutes.
Additional Observation
The version bump step's
git addincludescrates/vim-line/Cargo.tomleven though thevim-linecrate'sCargo.tomlis never modified (vim-line has no workspace path dependencies). This is harmless but suggestsvim-linemay be a recently added crate — which would explain why the release workflow worked before and broke now (the 60s waits may have been OK for fewer crates, but the addedvim-line+seq-replsteps pushed the timing over the edge).Recommended Action
crate already existserror (which you can handle by adding|| trueor checking withcargo searchfirst)@navicore-bot can you prepare a PR for the changes suggested in this issue to make restarting the release not fail if the crate already exists and to increase the wait time?
the clippy lint issues are an indication something changed in how clippy works. it is not acceptable to add annotations to ignore clippy or change hints to warnings or visaversa.
we need to pin the gh actions so that this nonesense doesn't happen.
reopening even though I mergted the PR to get the release out. I want to clean up the extra annotations for the lint issues in test and figure out why this turned into a regression when no one changed the code.
in another project we pinned actions - shall we do that here?
ie in navicore/vvw we
@navicore-bot
Yes, pinning the toolchain is a good idea — it prevents surprise breakages from new clippy lints (like the
function_casts_as_integerlint we just hit from Rust 1.89).The trade-off:
Given that we just had to fix a pre-existing clippy regression in PR #386, pinning makes sense. I can prepare a PR to pin
toolchain: 1.93.0(or whatever version you prefer) across the CI workflows if you'd like.@navicore-bot I'd rather not encourage the kind if hasty fixes that surprises in linting bring so lets pin to 1.93.0 as that was a good baseline for other projects.