Commit dcac0e5
committed
fix(transaction): use non-panicking elapsed checks in the reaper
The reaper captures `now` once per pass, then snapshots and rechecks
the live registry. A transaction created, claimed, or rolled back
after that capture can have a created_at/claimed_at/dormant_since
later than `now`. std::time::Instant::duration_since panics when its
argument is later than self (the current toolchain returns 0 instead,
but that is undocumented behavior), which would permanently terminate
the one-shot reaper task and let abandoned objects exhaust the live
transaction quota.
Use saturating_duration_since so a timestamp newer than now is
treated as zero elapsed: a freshly created/claimed/rolled-back
transaction is never expired on the current pass. Same fix in
claim_expired. Adds regression coverage for timestamps newer than
now. All 37 unit tests pass in debug and release.1 parent 1ca412b commit dcac0e5
2 files changed
Lines changed: 58 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
303 | 303 | | |
304 | 304 | | |
305 | 305 | | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
306 | 313 | | |
307 | | - | |
| 314 | + | |
308 | 315 | | |
309 | 316 | | |
310 | 317 | | |
| |||
483 | 490 | | |
484 | 491 | | |
485 | 492 | | |
486 | | - | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
487 | 500 | | |
488 | 501 | | |
489 | 502 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
459 | 459 | | |
460 | 460 | | |
461 | 461 | | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
462 | 474 | | |
463 | 475 | | |
464 | 476 | | |
| |||
631 | 643 | | |
632 | 644 | | |
633 | 645 | | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
634 | 677 | | |
635 | 678 | | |
636 | 679 | | |
| |||
0 commit comments