ci: nvx-rs mutants' summarize miscounts the shards when one artifact downloads
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 76/100
Research direction
Start with .github/workflows/nvx-rs-mutants.yml, especially the shard upload and summarize steps around lines 175–254, and review the linked actions/download-artifact behavior described in the issue. Check how shard indices and outcomes.json are handled when one artifact is downloaded or a shard uploads nothing. Done when summarize fails if either of two shards uploads nothing and succeeds with shards: 1, merging that shard’s outcomes.
Written by the indexing model from the issue text.
Description
Related: #726, for which 431cae05 added the workflow. Needs: nothing.
Goal. The summarize job of nvx-rs mutants passes only when every shard reported its outcomes, and then merges them all, whatever the number of shards.
Today (dev d1946233):
- summarize counts directories. It downloads the shards' artifacts with
actions/download-artifact@v8, withpattern: nvx-rs-mutants-shard-*-<run ID>andpath: shards(#L195-L199). It then takes each directoryshards/*/for a shard, merges theircaught.txt,missed.txt,timeout.txtandunviable.txt(#L211-L225), and fails unless it countedSHARDSof them (#L251-L254). - A lone artifact lands in
shards/itself. download-artifact gives each artifact a directory of its own only when several match, and extracts a lone one intopath(download-artifact.ts#L185-L195, at the commit that@v8resolved to). A shard's artifact, cargo-mutants'mutants.out, holds two directories,diff/andlog/. - So, with one artifact, summarize counts 2 shards, however many reported. It finds no outcome list in
diff/orlog/, and uploads empty lists asnvx-rs-mutants-<run ID>. With 2 shards, as every push that changes the workflow runs (#L85-L88), the count check passes. Withshards: 1, it always fails; none of the 18 dispatches so far used one shard. - A shard that fails early uploads nothing. Its upload needs
outcomes.json(#L175-L184), and summarize runs whatever the shards' results (#L186-L189). - The summarize job dates from 431cae05. b2572d40 and 10035afd last changed the workflow, in its descriptions only.
Evidence: run 40441338923, a push of 4a8b5341.
- Attempt 1: shard 1 failed in "Install Rust and cargo-mutants" (
failed to download from https://index.crates.io/config.json, a connection timeout), and uploaded nothing. summarize loggedFound 1 artifact(s)andStarting download of artifact to: /home/runner/work/nvx/nvx/shards, passed, and uploaded 484 bytes of empty lists. Shard 0's artifact lists 14 caught mutants and 1 unviable one. - Attempt 2 reran shard 1, and summarize merged both shards: 24 caught, 0 missed, 6 unviable.
Scope (one PR), for example:
- Give each shard a directory that doesn't depend on the number of artifacts: for example, upload each shard's outcomes under a directory named for its index, and download them with
merge-multiple: true, so that every shard lands inshards/<index>/. - Check each expected shard by its index, and count the shards by their
outcomes.json, not by directories. - Fail summarize when a shard job didn't succeed (
needs.mutants.result), besides counting.
Done when: summarize fails when one of two shards uploads nothing, and passes a dispatch with shards: 1, with that shard's outcomes merged.
- Dominant language
- Rust
- Stars
- 758
- Forks
- 48
- Avg merge
- 18h 37m
- Merged PRs (30d)
- 398
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from microsoft/nvx
-
Difficulty 5/5 Over a week Newbie friendliness 38/100
Maintainers usually reply within 1 day
-
CPU profile: Standard_D8ads_v5 / EPYC 9V74 fails amd.genoa.v1 on WHPPossibly taken @ppenna claimed this today. Openbug
Difficulty 4/5 3-5 days Newbie friendliness 20/100
microsoft/nvx#928 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 55/100
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 24/100
Maintainers usually reply within 1 day
Similar issues
-
desktop documentation
Difficulty 1/5 Under an hour Newbie friendliness 90/100
vfarcic/dot-agent-deck#2008 ·
Maintainers usually reply within 1 day
-
needs triage
Difficulty 1/5 Under an hour Newbie friendliness 85/100
pbakaus/impeccable#1210 ·
Maintainers usually reply within 1 day
-
area: ci priority: P4 ready-for-agent
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
shep-pm/shep#1249 · 1 comment ·
Maintainers usually reply within 1 day
-
L: javascript
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
dependabot/dependabot-core#16744 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
nautechsystems/nautilus_trader#5486 · 1 comment ·
Maintainers usually reply within 1 day