You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[draft] Unmount: separate the request deadline from the join observation deadline #4
Draft — review before filing upstream. Design cleanup; no behavior change on its own.
Current state
DRAIN_WAIT (5 s) bounds both the request wait and the observation of the receive-loop join. Ephemeral-AI-Lab#497 adds JOIN_WAIT = 1 s for the join once requests are quiescent; the request wait still uses the full DRAIN_WAIT.
Proposal
Make the two waits explicit in code and docs (two names/constants, or a small struct), so a future fix cannot "just raise DRAIN_WAIT" again. Defaults unchanged: 5 s requests, 1 s join after quiescence.
Data behind the defaults
normal unmount: n=20, 17–44 ms with the grace; 20–82 ms without.
500 ms was rejected because one healthy unmount took 374 ms under load; 1 s keeps ~2.7× margin.
early-mount stall: 5.0–5.6 s with the 5 s wait; 1.02–1.47 s with 1 s.
Acceptance
names/doc explain which wait covers what; no behavioral change; existing tests unchanged.
the abort still fires on the request deadline (DRAIN_WAIT); the join grace only bounds observation — a split must not change that.
Closing in favour of a note on Ephemeral-AI-Lab#497: after Ephemeral-AI-Lab#497 the two waits are already separate constants (DRAIN_WAIT for requests, JOIN_WAIT for the join). What remains is naming/documentation, not a design change, so a separate issue adds noise.
Activity
mengmengmengqiang commentedon Oct 28, 2026
Closing in favour of a note on Ephemeral-AI-Lab#497: after Ephemeral-AI-Lab#497 the two waits are already separate constants (
DRAIN_WAITfor requests,JOIN_WAITfor the join). What remains is naming/documentation, not a design change, so a separate issue adds noise.