Let e2e runs share a host, instead of colliding on fixed ports #118
No reviewers
Labels
No labels
area:docs
area:identity
area:ops
area:plugin
area:server
channel:community
channel:direct
channel:owned
channel:press
channel:social
e2ee-constrained
gate:at-ga
gate:pre-ga
marketing
parity
relay:absent
relay:planned
relay:requested
relay:supported
risk:additive
risk:contract
risk:none
usability
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Nectenda/nectenda!118
Loading…
Reference in a new issue
No description provided.
Delete branch "worktree-e2e-parallel"
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?
Supersedes #117. Part of #77 and #80. Also phase 5 of the agent-queue plan ("parallel-safe e2e").
Why: the first afternoon with the e2e gate on pull requests, overlapping runs failed with
EADDRINUSE 127.0.0.1:21236(508/509, then #115 and #116). Nothing had ever kept two runs apart. The job-levelconcurrencyis ignored by Forgejo, and runner containers share the host network namespace.What: each run isolates itself instead of queueing:
packages/e2e/port-block.ts). The run claims 32 ports in 20000–32767 by holding the block's last port open for the whole run. Suite ports are the base plus a fixed offset (test/ports.ts), so a lone run stays on 21234–21260. A pinnedNECTENDA_E2E_PORT_BASEthat is taken fails loudly.TMPDIR,/tmp/nectenda-e2e-<hash>(run-scope.ts), short enough for Chromium's socket path limit.clean.shis scoped to that dir and this checkout's chromedriver../clean.sh allis the old machine-wide sweep.run-detached.shlogs in the checkout.-nolisten local, and the run prints its display and the abstract-socket count. The dead job-level group ande2e.yml's group are removed. Listener diagnostics cover the whole range.Verified locally:
clean.sh checkcounted only its own processes (8 and 12 test processes; 2 and 3 chromedrivers).Still to verify here: this run overlapping another PR's run on the runner, both green. Each should log a different block, and the abstract X11 count should be 0.
Changelog
NONE
🤖 Generated with Claude Code
https://claude.ai/code/session_01StURdiv33xnMfE2XRyg8Lt