The dropped-tail lease check waits until the slot is handed on, not a fixed heartbeat + lease + 1 s #137
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "task/3734-tests-step-concurrency-sx-s-dropped-tail"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Tracker: #3734
What this delivers
tests/step_concurrency.sxcheck_tail_capacitychecks "the slot a dropped tail left behind is handed on once its lease lapses". It used to turn the server for a fixedtail.HEARTBEAT_MS + tail.LEASE_MS + 1000ms (8 s) after dropping a held tail, then send one tail and expect it admitted. The slot comes backLEASE_MSafter the dropped tail's last renewal. That renewal is the heartbeat after the server loop has seen the dropped connection, so it depends on how fast the server turns. Whenever it came more than about 2 s after the drop, the one tail was refused 503 and the check failed, though the slot came back moments later.Now, after the drop, the check sends a probe tail for the spare stream and turns the server until the gate answers it. An admitted probe sends its
retry: 500greeting; a refused one gets a whole 503. A refused probe is dropped, and another is sentPROBE_MS(100 ms) later. The check passes once a probe is admitted, and fails only if none is admitted within3 * (tail.HEARTBEAT_MS + tail.LEASE_MS)(21 s). A pass now ends when the slot comes back, about 7.2 s after the drop on an idle host, instead of after the full 8 s.Only the test changes. No file under
src/orrunner/changes, and the check's name stays as it was.Evidence
All runs were on m5, with binaries built by the gate cache's sx (300086027f) from
git archivearms of this branch's base8cda22f, which already has the clock-timed heartbeat (fa0995c).taskpolicy -bthe figures were 1.08 s and 7.16 s.2 * tail.HEARTBEAT_MS) was added to the server loop right after the check's clock starts. This is the "server's turns fall behind the clock" case the task describes. The old check failed 3 of 3 (FAIL the slot a dropped tail left behind is handed on once its lease lapses,CONCURRENCY FAIL (1 checks)). The new check passed 3 of 3, with the slot found 8.1–8.3 s after the drop.fa0995creached master (04:13Z on 2026-10-24), nofullgate job has failed this check. The last one that did was job 91, on head3ee9597, which lackedfa0995c. This change removes the fixed wait that left the check about 0.8 s of slack.Gates
At head
529f3f1, on m5. That commit only rewords the comment above the probe loop, so the code is as reviewed at7092fbd:full: tracker gate run 375 (this run's #1), passed, 23:47–00:10 EEST. Everytests/*.sxfile passed,tests/step_concurrency.sxincluded. Release and step9 passed. The main Playwright config passed 740 with 1 skipped in 3.9 min, and the runner config passed 10.Earlier, at head
7092fbd, on m5:fast: tracker gate run 353, passed, 20:51–20:52 EEST.full: tracker gate run 355, passed, 20:52–21:13 EEST. Everytests/*.sxfile passed,tests/step_concurrency.sxincluded; release and step9 passed; the main Playwright config passed 740 in 3.5 min; the runner config passed 10.fast: tracker gate run 360, passed, 22:08–22:09 EEST.