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
A failed probe of the running front door spawns a second door beside it #370
ensureFrontDoor probes the running door's provider listener over TLS with a 2 s timeout, and on any failed probe it distrusts that supervisor and spawns a replacement beside it. The old door is never stopped, so a transient failure (a slow answer while many sessions reattach at once, say) leaves two doors alive. The replacement finds the sticky ports held and moves every listener, the direct one included, which strands every provider launch routed through headroom (#367) and leaves sessions on the old door unreachable from the new address.
Seen twice on one day on a machine running a few dozen sessions: each new door was spawned beside a live one, and the second of them ten seconds after a launch started. The door log shows the sticky-port moves but not why the probe failed, so the rejection reason should be logged when a supervisor is distrusted.
A failed probe should be retried with backoff before it is believed. If the listener is still unreachable, the unauthenticated supervisor is stopped (it has already been distrusted) or the launch is refused with the reason; spawning beside a live door is the defect. The probe's timeout alone is not the fix, since the next slow start spawns a duplicate anyway.
Observed live on an install upgraded to the release carrying this change. The headroom daemon was replaced by the new generation, which started with the allowlist file option and an owner-only allowlist file naming the serving door's direct origin. A fresh provider launch then routed through the door and headroom and answered, while sessions from earlier generations were still registered. Probing the daemon directly: the door's direct origin as the upstream base URL passed the guard (the request reached the door and was refused there for lack of a token), and a foreign loopback origin was refused with a 400. headroom status and doctor report the daemon healthy with no allowlist drift; the one remaining doctor failure is an older door still serving pre-upgrade sessions, which drains as they end.
Activity
Mearman commentedon Oct 12, 2026
Observed live on an install upgraded to the release carrying this change. The headroom daemon was replaced by the new generation, which started with the allowlist file option and an owner-only allowlist file naming the serving door's direct origin. A fresh provider launch then routed through the door and headroom and answered, while sessions from earlier generations were still registered. Probing the daemon directly: the door's direct origin as the upstream base URL passed the guard (the request reached the door and was refused there for lack of a token), and a foreign loopback origin was refused with a 400.
headroom statusanddoctorreport the daemon healthy with no allowlist drift; the one remainingdoctorfailure is an older door still serving pre-upgrade sessions, which drains as they end.