Commit e8ff98d
fix: survive a host that cannot hand a socket to a worker (PyPy on Windows)
16 of 17 CI jobs are green; this is the seventeenth. PyPy on Windows has
`socket.share` as a name but the call does not work, so the capability
check passed and the failure surfaced three steps later as `EOFError: bad
socket handshake: b''` -- with the master gateway dead and no explanation
anywhere.
Three separate defects behind that one symptom:
* the capability is now settled by *doing* it once, against our own pid,
rather than by `hasattr`. A host that cannot hand over a socket refuses
the request up front, where a reason can still reach the coordinator.
* a failed socket gateway no longer kills the gateway it was requested
through. It runs as a task on that worker's host, so asking for one
unsupported sub-gateway cost the master too -- which is why the errors
cascaded across 51 tests instead of failing one.
* `channel.send`/`receive` check for a foreign event loop before checking
whether the channel is closed. Both are caller bugs, but which one you
were told about depended on whether the peer had closed yet, so the
event-loop diagnostic lost a race on the slower interpreter.
The socket transport simply cannot work where neither `pass_fds` nor a
working `share()` exists, so those gateways skip there with that reason
rather than failing. Removing the limitation means not handing the
socket over at all -- spawning the worker as the listener and reporting
its address back -- which is a bigger change than this one.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent 39251b9 commit e8ff98d
7 files changed
Lines changed: 66 additions & 8 deletions
File tree
- src/execnet
- testing
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
48 | 63 | | |
49 | 64 | | |
50 | 65 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
328 | 328 | | |
329 | 329 | | |
330 | 330 | | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
331 | 335 | | |
332 | 336 | | |
333 | | - | |
334 | 337 | | |
335 | 338 | | |
336 | 339 | | |
| |||
344 | 347 | | |
345 | 348 | | |
346 | 349 | | |
| 350 | + | |
347 | 351 | | |
348 | 352 | | |
349 | 353 | | |
350 | | - | |
351 | 354 | | |
352 | 355 | | |
353 | 356 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
| 46 | + | |
46 | 47 | | |
47 | 48 | | |
48 | 49 | | |
| |||
51 | 52 | | |
52 | 53 | | |
53 | 54 | | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
54 | 61 | | |
55 | 62 | | |
56 | 63 | | |
57 | | - | |
58 | | - | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
59 | 75 | | |
60 | 76 | | |
61 | 77 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
901 | 901 | | |
902 | 902 | | |
903 | 903 | | |
904 | | - | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
905 | 912 | | |
906 | 913 | | |
907 | 914 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
15 | 16 | | |
16 | 17 | | |
17 | 18 | | |
| |||
188 | 189 | | |
189 | 190 | | |
190 | 191 | | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
191 | 197 | | |
192 | 198 | | |
193 | 199 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| 17 | + | |
17 | 18 | | |
18 | 19 | | |
19 | 20 | | |
20 | | - | |
21 | | - | |
22 | | - | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
23 | 30 | | |
24 | 31 | | |
25 | 32 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
253 | 253 | | |
254 | 254 | | |
255 | 255 | | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
256 | 260 | | |
257 | 261 | | |
258 | 262 | | |
| |||
0 commit comments