mirror of
https://github.com/microsoft/vscode.git
synced 2026-09-30 05:43:06 +01:00
A cold WSL connect downloads a ~220 MB server inside the distro, but the readiness deadline was a single 60s total timeout, so the attempt was guaranteed to fail and be retried. Each retry spawned another bootstrap that started its own concurrent download; they then corrupted each other and failed with "error renaming downloaded server: Directory not empty". Fix the whole chain: - WSL waits on output rather than a wall clock. The readiness deadline is now an idle timeout rearmed on every line the bootstrap prints, with a separate absolute ceiling, so a slow download no longer looks stuck. Also surface a spawn `error`, which previously hung until the timeout. - WSL dedupes in-flight connects per distro, reserving synchronously before the first await so concurrent callers cannot both spawn. - The WSL launch carries `--idle-timeout`, matching the SSH spawn path, so an agent host abandoned by a failed attempt reaps itself instead of lingering. The timer is paused while a client is connected. - SSH and Dev Containers size their endpoint-registration wait to a cold server download instead of ~10s, reporting progress while they wait. The installer now reports whether it installed, so the long budget applies only to a cold start. - An automatic retry no longer clears the reconnect budget it depends on, and a reconnect for an address already being dialed joins that attempt rather than starting a competing one. - The CLI download cache stages per download instead of sharing one `.staging` directory it wipes first, serializes concurrent downloaders behind a file lock, treats a lost rename race as success rather than a spurious "please retry", and cleans up staging on every exit path. Separately, `RemoteAgentHostContribution` registered a sessions provider for every configured entry, including kinds whose own contribution already owns one. That threw and aborted the rest of the reconcile, so connections were never wired: the filesystem authority went unregistered and root state was never observed, leaving hosts that appeared connected but reported no models and could not read files. Restrict it to the kinds it owns and decouple provider registration from connection wiring. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>