Skip to content

Keep fuzz binaries out of the Ferrum target cache - #80

Merged
gauravtiwari merged 1 commit into
mainfrom
ferrum-target-excludes
Oct 20, 2026
Merged

gauravtiwari merged 1 commit into
mainfrom
ferrum-target-excludes

Conversation

@gauravtiwari

Copy link
Copy Markdown
Contributor

Summary

  • Exclude x86_64-unknown-linux-gnu/release/deps/<target>-* for the 10 fuzz targets in both BoringCache plans and in the matching GitHub cache paths. The uplifted copies at release/<target> were already excluded, but the deps/ outputs (about 3.65 GB for each target) were still archived.
  • Run the fuzz smoke step with one --target-scope per job (fuzz-smoke-<run id>-<attempt>). A scope's usage record travels with the cached target, so the fixed fuzz-smoke scope added every earlier job's outputs to one active set and pruning could never evict them.
  • Prepare also prints /tmp usage and its mount.

Why

Every cargo-target save since run 17 (2026-10-15) has failed with a disk quota error (os error 122) while staging compressed chunks in /tmp. On the ubuntu-26 runners /tmp is a separate mount of about 8 GB, and the saves failed at the same chunk count whether the root filesystem had 11 GB or 20 GB free. The last successful save, run 16, published 54.94 GB, and every later run restored that snapshot.

Checks

  • bundle exec bin/bench check: 15 tools, 32 cases, ok
  • Test suite: 160 runs, 0 failures
  • bash -n on the fuzz smoke overlay

Docs

Fuzz builds link each target into release/deps/<name>-<hash> and hard-link
it to release/<name>. The uplifted copies were already excluded, but the
deps outputs (about 3.65 GB for each of the 10 targets) were still
archived. Since rolling run 17 every cargo-target save has filled the
runner's separate /tmp mount while staging chunks. Exclude the deps outputs
in both BoringCache plans and in the matching GitHub cache paths.

The fuzz smoke step passed a fixed --target-scope. A scope's usage record
travels with the cached target, so every job added to one active set and
pruning could never evict an earlier job's outputs. Each job now uses its
own scope.

Prepare also prints /tmp usage and its mount.

Docs:
- https://boringcache.com/docs/adapters/cargo
- https://github.com/actions/toolkit/tree/main/packages/glob#patterns
@gauravtiwari
gauravtiwari merged commit 82c90f3 into main Oct 20, 2026
4 checks passed
@gauravtiwari
gauravtiwari deleted the ferrum-target-excludes branch October 20, 2026 16:27
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

Successfully merging this pull request may close these issues.

1 participant