releaseBackendLock tree-kills only the Desktop's own backends (backendConnectionState + backendPool). A messaging gateway launched by the gateway-launcher desktop plugin via /api/gateway/start lives outside those structures; on Windows its launcher (venv\Scripts\python.exe) keeps the venv mandatory-locked, so the 15s release gate aborts the hand-off BEFORE the venv-blocker scan — the scanner's pausable-gateway exemption and the CLI updater's pause machinery never get their chance. Delegate to `hermes gateway stop --all` (launcher + worker discovery across every profile; gateway.pid records only the uv WORKER and taskkill /T from the worker never reaches its parent). Per review, adds the drain-semantics counterpart: every applyUpdates abort path (lock-held, venv-blocked, probe-failed, updater-spawn-failed) restores gateways via `gateway start --all`, so a failed update no longer strands every profile's gateway stopped. Pure DI'd module + tests. Salvaged from PR #76057 (issue #70337; overlap credit: #70477 by @JonthanaHanh targeted the same symptom earlier via ZIP-dir preservation).
2 lines
11 B
Plaintext
2 lines
11 B
Plaintext
Sergey0515
|