chore: serialise tests builds on arm64-linux-16#6089
Conversation
Same fix as PR #6009 applied to `gc-tests`. The `tests` matrix on `arm64-linux-16` runs `nix-build-uncached --max-jobs auto`, which schedules three parallel ~3 GB derivation builds and OOMs the runner ("Killed" → "The runner has received a shutdown signal"). Use the matrix `include:` pattern to override `max_jobs` per-OS and plumb it through to `test-blueprint` like `gc-tests` already does. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Bumped from PR #6090 (cache-busted
So 2 parallel ~3 GB builds fit in 16 GB. Going to 3 was the original failure mode; 2 is the right ceiling. |
tests builds on arm64-linux-16tests builds on arm64-linux-16 to max-jobs=2
Update: gc-tests can't go to 2PR #6088 with a fresh cache-buster ( Run: https://github.com/caffeinelabs/motoko/actions/runs/25411132891/job/74532926605 PR #6090's gc-tests-at-2 only appeared to pass because cachix served the GC variants from a different content hash. Two RTS-variant builds in parallel (each ~3 GB) exceed the 16 GB runner. So the matrix is asymmetric:
Awaiting |
ee68f4f to
677ddc3
Compare
tests builds on arm64-linux-16 to max-jobs=2tests builds on arm64-linux-16
tests builds on arm64-linux-16tests builds on arm64-linux-16
Summary
Extends the same
max_jobs=1workaround used bygc-testsin #6009 to thetestsmatrix onarm64-linux-16.ubuntu-24-largekeepsmax-jobs=auto.Why
tests (arm64-linux-16, release)andtests (arm64-linux-16, debug)have been OOM-killed by the runner whenevernix-build-uncached --max-jobs autoschedules three parallel ~3 GB derivation builds. Most recent observation: https://github.com/caffeinelabs/motoko/actions/runs/25409615273/job/74528169567 (initial CI on thepocket-icbump PR #6088 — failure was unrelated to the bump itself).Why max-jobs=1 (not 2)
We probed a higher ceiling but it's not stable enough to ship:
gc-testsandtestsatmax-jobs=2against a cache-bustedtest-runnerand appeared to pass.pocket-ictorelease-2026-04-30_04-26-base#6088 with a different cache-buster (forcing a different content hash than [experiment] arm64-linux-16 max-jobs=2 #6090's, and therefore a real cold rebuild of the GC-variant derivations) hit OOM ongc-tests (arm64-linux-16, 2)after ~2.5 minutes:The result depends on which derivations happen to be cachix-cached vs cold-rebuilt at any given moment. An asymmetric
gc-tests=1, tests=2configuration would also be brittle: a future test addition could shift the memory profile ofrelease-systems-goand silently reintroduce OOMs. Going uniformmax-jobs=1is slower but stable.Test plan
tests (arm64-linux-16, *)OOM on the resulting run🤖 Generated with Claude Code