ci(e2e): restore BROWSER_PROCS 4->8 now proc-crash root cause is fixed (bookshelf-dc11r) #1300
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "bd-bookshelf-dc11r"
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?
Summary
93f101eb): Worker.WaitForCompletion permanently closes the tasks channel; workerSet now rebuilds fresh Workers after drain so StartWorker→DrainWorker→StartWorker no longer panics with "send on closed channel".Verification
Ran
BROWSER_PROCS=8 make e2e-browseron macOS (18 GB RAM, Chrome) 5 times:Test plan
Closes bead bookshelf-dc11r on merge.
Security Review — PR #1300 (bookshelf-dc11r)
Reviewed per
.claude/rules/review-standard.md.Scope of change:
BROWSER_PROCSenv var bumped4→8in.forgejo/workflows/ci.yml; comment block ine2e/browser/browser_suite_test.goupdated to match.Checks performed
Chrome flags — no change. The launcher flag set is identical between
origin/mainand this branch:Headless(true),NoSandbox(true),disable-dev-shm-usage,disable-gpu,disable-background-networking,no-first-run,disable-default-apps,Leakless(false).NoSandbox(true)is the expected CI posture (unprivileged runner, no user-namespace support) and predates this PR; no new security-weakening flag was introduced.CI job names — no rename. No
name:lines changed; branch-protection required-status-check bindings are unaffected.Secrets/env — none added. No new
secrets.*references, tokens, keys, or credentials appear in the diff.Network/registry surface — none added. No new
uses:,image:, or external download URLs introduced.New files — none. Change is confined to one env-var value and comment text.
Findings
No security findings.
REVIEW VERDICT: 0 blocker, 0 major, 0 minor
Code Review — bookshelf-dc11r (PR #1300)
Phase 1: Spec Compliance
The bead asks to restore
BROWSER_PROCSfrom 4 back to 8 now that both lrlp6 root causes are fixed. The diff does exactly that:BROWSER_PROCS: "4"to"8"in ci.yml plus a companion comment update inbrowser_suite_test.go. No extra or missing work.Phase 2: Code Quality
OOM-safety justification (the crux)
Both lrlp6 root causes are verifiably fixed on
mainbefore this PR:93f101eb):internal/wfengine/worker_set.goconfirmsstart()detectsdrained == trueand callsbuildQueueWorkers()before starting pollers. The fix is real and already merged as part of lrlp6 (commit93f101eb, merged via PR #1242).--disable-gpu,--disable-background-networking,--no-first-run,--disable-default-appsare present in thebrowser_suite_test.golauncher chain (added in61f2899b/ lrlp6). These eliminate the GPU subprocess (~50-100 MB each) and reduce per-instance footprint from the old 200-400 MB range to ~100-200 MB.Memory budget reasoning:
The comment claims: 8 x ~200 MB Chrome + 512 MB MySQL + 8 x ~80 MB Go = ~2.7 GB total. The pre-fix upper bound was 3.2 GB for Chrome alone; the headroom gain from
--disable-gpuis genuine. The math is internally consistent. The runner has 12 cores with no explicit cgroup memory limit (ci.yml line 254).BROWSER_PROCS wiring:
BROWSER_PROCS: "8"is set as a step env var, flows tomake e2e-browser, and the Makefile passes--procs=$(BROWSER_PROCS)directly to ginkgo. Nothing else overrides or caps it. Wiring is correct.Job name:
e2e-browser: / name: E2E Browseris unchanged. No branch-protection break.DB budget: 8 x 15 = 120 conns, well under
max_connections=512. No concern.[MINOR] .forgejo/workflows/ci.yml:498 — "no explicit memory limit" overstates certainty
The comment justifies safety with "comfortably within the runner's available headroom (12-core runner, no explicit memory limit per ci.yml comment at line 254)." Absence of a cgroup memory limit is not the same as unlimited safe headroom: the Kubernetes node has a physical ceiling and other pods share it. The budget math is reasonable but the comment overstates the guarantee. Suggested fix: replace "no explicit memory limit" with "runner has historically sustained this load" or cite observed RSS from a CI run.
[MINOR] e2e/browser/browser_suite_test.go:128 — local verification is macOS 18 GB, not Linux CI
The comment documents "5/5 runs clean on macOS (18 GB RAM)" as the verification evidence. The OOM risk is specific to the CI Linux container environment, which has different memory pressure characteristics. The CI green run on this PR is the real datapoint; the comment could note it (e.g., "verified clean on CI: PR #1300, 5/5 runs") so future readers do not rely solely on a macOS result that does not exercise the constrained environment.
REVIEW VERDICT: 0 blocker, 0 major, 2 minor
d12d377ca0682d61fb51