Skip to content

fix: retry instead of spawning local server when auto_kill=false#366

Merged
sudo-tee merged 2 commits intosudo-tee:mainfrom
jbro:fix/no-orphan-spawn-on-attach
Apr 27, 2026
Merged

fix: retry instead of spawning local server when auto_kill=false#366
sudo-tee merged 2 commits intosudo-tee:mainfrom
jbro:fix/no-orphan-spawn-on-attach

Conversation

@jbro
Copy link
Copy Markdown
Contributor

@jbro jbro commented Apr 27, 2026

Summary

  • When connecting to an externally managed server (auto_kill=false), if the initial health check fails, retry the connection instead of spawning a new local server that would leak as an orphan process
  • The spawned Go binary ignores SIGHUP and VimLeavePre only unregisters the port without killing the process, so these orphans survive Neovim exit

Changes

server_job.lua — Added a new branch in try_connect_to_custom_server: when the connection fails and auto_kill is false, retries the health check (5 attempts with backoff) instead of falling through to spawn_local_server(). Resolves the promise on success or rejects with a clear error after retries are exhausted.

jbro added 2 commits April 27, 2026 12:01
When connecting to an externally managed server (auto_kill=false), the
health check failure path fell through to spawn_local_server(). These
spawned processes survived Neovim exit (Go binary ignores SIGHUP) and
were never cleaned up because VimLeavePre only unregistered the port
instead of killing the process.

Now retries the health check (5 attempts with backoff) instead of
spawning an orphan.
Add three tests for the new code path that retries connecting to an
externally managed server instead of spawning a local one:
- succeeds after transient health-check failures
- rejects after exhausting all retries
- never falls back to spawn_local_server
@sudo-tee
Copy link
Copy Markdown
Owner

This seems to be a reasonable fix.

Thanks for the PR

@sudo-tee sudo-tee merged commit 1e1fd08 into sudo-tee:main Apr 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants