Repository navigation
Commit 653c5dd
tests/apps: bound the output drain, which hung CI for 26 minutes
This is what wedged the runners all day. The GUI apps job ran for
exactly its wall-clock limit on every push; before that limit existed it
held a runner slot for GitHub's 6-hour default, which is why nothing
completed between 10:10 and the evening.
It is not a slow app. _drain() ended with
return proc.stdout.read().decode(...)
which blocks until EVERY writer closes the pipe. _terminate() kills the
app's process group, but the per-user services its wrapper starts --
apache2 for the data server, Xvfb, the JMS dispatcher -- outlive it and
still hold the inherited write end, so there is no EOF to wait for. The
runner's cleanup listed exactly those as orphans when it killed the job:
python3, Xvfb, and six apache2 processes.
The log pins it precisely: machregister finished at 17:16:11 and the
next app never reported, for 26 minutes, until cancellation at 17:42.
Never reproduced locally, and the reason matters -- on a developer box
the data server is usually already running, so the wrapper starts
nothing that could inherit the pipe. It needs a machine where the
services come up fresh, which is every CI run and no interactive one.
_drain now reads with a deadline: non-blocking, select-driven, stopping
on real EOF or when the app itself is gone and only services still hold
the pipe. A stuck app now costs its own timeout and gets reported
instead of taking the run with it.
All 21 apps still pass locally.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EFMUNbw2UpRPmgsqviAowb1 parent 2f66972 commit 653c5dd
1 file changed
Lines changed: 50 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| 28 | + | |
28 | 29 | | |
| 30 | + | |
29 | 31 | | |
30 | 32 | | |
31 | 33 | | |
| |||
205 | 207 | | |
206 | 208 | | |
207 | 209 | | |
208 | | - | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
209 | 231 | | |
210 | | - | |
211 | | - | |
212 | | - | |
213 | | - | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
214 | 235 | | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
0 commit comments