Skip to content

Commit a5a3e60

Browse files
committed
fix(ci): drop RE max-jobs 16 to 8 after server-side crash
The first -j16 action (gcc-stage1) coincided with a full CAS/RE outage: RST_STREAM INTERNAL on the action plus mass FetchBlob DEADLINE_EXCEEDED on pulls at 23:20 UTC. Likely server OOM under 2x16 compile jobs plus casd cache pressure on the 128 GB builder. 2 builders x -j8 keeps an 8x speedup over the old -j1 while staying under the RAM ceiling. Assisted-by: Claude Fable 5 via GitHub Copilot
1 parent 77daa15 commit a5a3e60

2 files changed

Lines changed: 35 additions & 8 deletions

File tree

.github/actions/generate-bst-ci-config/action.yml

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,18 @@ runs:
4444
cat >> buildstream-ci.conf <<'BSTCONFBUILD'
4545
build:
4646
retry-failed: True
47-
# 16 = physical cores on the RE builder (7950X3D, 16c/32t, 128 GB).
48-
# With builders: 2, two concurrent actions saturate all 32 threads.
4947
# max-jobs does NOT affect cache keys (buildelement.py: "normally
5048
# automatically resolved and does not affect the cache key"), so
51-
# raising it preserves the warm CAS. The old max-jobs: 1 (GCC
52-
# bootstrap OOM on gimple-match.cc) is obsolete: the -O1 patch
53-
# fixed the ICE and gcc is already cached; -j1 made every big
54-
# element (llvm, WebKit x2) a 10-30h single-core compile that
55-
# mathematically busted the 480m budget.
56-
max-jobs: 16
49+
# tuning it preserves the warm CAS. History: max-jobs: 1 made every
50+
# big element (llvm, WebKit x2) a 10-30h single-core compile that
51+
# mathematically busted the 480m budget (11-day outage). The first
52+
# attempt at 16 coincided with a server-wide outage (RST_STREAM
53+
# INTERNAL + FetchBlob DEADLINE_EXCEEDED on all pulls, 23:20 UTC
54+
# 2026-07-09) — likely OOM: gimple-match.cc compiles eat 4-6 GB
55+
# each, and 16 in parallel plus casd cache pressure exceeds the
56+
# 128 GB builder. 2 builders x -j8 is a safe 8x speedup over -j1
57+
# while staying well under the RAM ceiling.
58+
max-jobs: 8
5759
BSTCONFBUILD
5860
else
5961
cat >> buildstream-ci.conf <<'BSTCONFBUILD'

docs/skills/ci.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2463,3 +2463,28 @@ element-scoped fix (variables in a repo patch), never a global -j1.
24632463
24642464
**Changing max-jobs mid-outage costs nothing:** already-built elements pull from the
24652465
artifact cache by BST cache key; only not-yet-built elements get new RE action digests.
2466+
2467+
### max-jobs: 16 crashed the RE server — 8 is the ceiling (2026-07-09)
2468+
2469+
The first run at `max-jobs: 16` died at ~23:20 UTC: gcc-stage1.bst, 28 minutes into
2470+
its remote action, got `INTERNAL: Stream removed (Received RST_STREAM with error
2471+
code 2)`, and simultaneously every artifact pull started failing with `FetchBlob
2472+
failed with status DEADLINE_EXCEEDED`. The whole CAS/RE endpoint at
2473+
cache.projectbluefin.io:11002 stopped serving mid-run, then recovered on its own
2474+
(TLS handshake succeeded again minutes after the run failed).
2475+
2476+
**Diagnosis:** likely server-side OOM. gimple-match.cc and friends eat 4-6 GB per
2477+
compiler process; 16 parallel jobs plus buildbox-casd's own cache pressure exceeds
2478+
the 128 GB builder, the worker (or the whole host) OOMs, and every open gRPC stream
2479+
gets RST_STREAM'd. From the client all you see is one build failure plus mass
2480+
DEADLINE_EXCEEDED on unrelated pulls — the correlated timing is the tell.
2481+
2482+
**Signature to recognize:** one RE action fails with `Stream removed / RST_STREAM
2483+
error code 2` AND pulls fail en masse with `FetchBlob ... DEADLINE_EXCEEDED` at the
2484+
same timestamp = server-side crash/restart, not a client or network problem. Probe
2485+
recovery with `echo | openssl s_client -connect cache.projectbluefin.io:11002`
2486+
(no SSH access to the server exists from CI or dev machines).
2487+
2488+
**Setting:** `max-jobs: 8` with `builders: 2`. Still 8x the old -j1 throughput,
2489+
peak compile RAM ~2x8x6 GB = ~96 GB worst case, under the ceiling. Do not raise
2490+
back to 16 without server-side memory monitoring in place.

0 commit comments

Comments
 (0)