`MissedTickBehavior::Delay` leaves no gap after a sweep that overran
Defect 8 / Tier 2 / suggestion
services/proxy/src/main.rs:109-112Expected review
`Skip` gets closer to the comment, and a `sleep(period)` at the end of the loop body is what actually gives a gap measured from when the pass finished.
Discovery difficulty
the first half of the comment is true and checkable, which lends the second half credibility. Distinguishing them means knowing that `Delay` reschedules from the moment of the late tick rather than deferring it, and the difference only shows up under an overrun.
Trigger
a sweep that takes longer than `CAIRN_SWEEP_INTERVAL`, which is the large store this feature exists for. Verified with a 100 ms period and 250 ms of work under `Delay`: the gaps between one pass finishing and the next starting were 2.0, 2.6 and 2.1 microseconds. Sweeps then run back to back for as long as the store stays big, which turns defect 6 from a stall into a permanently occupied worker thread.
Severity
suggestion