Nimblesite / Nimblesite/SharpLsp
Sidecar listener failure is invisible: exit 0, no stderr, error only in temp log
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 132
- Forks
- 5
- Avg merge
- 6h 24m
- Merged PRs (30d)
- 27
Description
Split out of #110 (its observability half — the transport half is fixed by the runtime named-pipe dispatch).
When IpcConnection.CreateListener fails, SidecarHost.RunAsync logs the error to the Serilog file sink only and returns; Program.cs/Program.fs then exit 0 with nothing on stdout/stderr (sidecars/SharpLsp.Sidecar.Common/SidecarHost.cs lines 44–49). The Rust host only ever sees sidecar exited before READY (src/sidecar/manager.rs wait_for_ready), which is exactly why #110 took multiple user log uploads to diagnose. Any residual bind failure (pipe-name squat, zombie instance, ACL denial) still reproduces that opaque symptom today.
Proposed:
- Sidecar: on listener failure, write one fatal line to stderr (or
FATAL:<reason>on stdout) and exit non-zero.CreateListenershould also preserve exception type, not justex.Message(IpcConnection.csCreateListener). - Host: when the READY wait ends in EOF, reap and report the child's exit status and include the sidecar log path (e.g.
%TEMP%/sharplsp-logs/sidecar-<name>.log) in the error.
Spec refs: [DIST-FAILURE-UX], [DIST-CI-WIN-TRANSPORT].
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with sidecars/SharpLsp.Sidecar.Common/SidecarHost.cs and IpcConnection.cs, then trace Program.cs/Program.fs and src/sidecar/manager.rs wait_for_ready. Reproduce a listener failure and observe the sidecar and host logs. Done means the sidecar reports the failure visibly with a non-zero exit, preserves the exception type, and the host reports the child status and sidecar log path.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, rust
- Domain
- distributed-systems, observability
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100