Commit 99a5aca
Refuse a sync overrun at guard exit even when the timer never fired (#38)
The sync deadline_guard's exit path raised only when its interrupt had
actually fired. On the threading.Timer fallback — the mechanism every
worker-thread run uses — the timer thread needs the GIL to run fire(),
so a node that held it through the deadline (a long C call, or plain
scheduling latency) returned normally, disarm() cancelled the pending
timer, and the overrun's writes committed; for a last node the run then
reported success past its wall-clock ceiling. Mirror the async guard's
exit check: raise NodeDeadlineExceeded when the interrupt fired or the
meter shows the deadline spent, and say so in the guard's docstring.
The regression test monkeypatches threading.Timer with one that never
fires, testing the exit contract deterministically instead of racing
the timer thread.
Fixes #22
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>1 parent 6f36c51 commit 99a5aca
2 files changed
Lines changed: 59 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
367 | 367 | | |
368 | 368 | | |
369 | 369 | | |
370 | | - | |
371 | | - | |
| 370 | + | |
| 371 | + | |
372 | 372 | | |
373 | 373 | | |
374 | 374 | | |
| |||
382 | 382 | | |
383 | 383 | | |
384 | 384 | | |
385 | | - | |
386 | | - | |
387 | | - | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
388 | 389 | | |
389 | 390 | | |
390 | 391 | | |
| |||
486 | 487 | | |
487 | 488 | | |
488 | 489 | | |
489 | | - | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
490 | 497 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
542 | 542 | | |
543 | 543 | | |
544 | 544 | | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
545 | 591 | | |
546 | 592 | | |
547 | 593 | | |
| |||
0 commit comments