fix: keep remote exec alive after stdin EOF - #394
Open
alongubkin wants to merge 1 commit into
Open
Conversation
Greptile SummaryThis PR keeps the remote-exec input channel open after local stdin reaches EOF, allowing the read side to wait for the remote command’s terminal frame.
Confidence Score: 5/5The PR appears safe to merge, with the attach lifecycle correctly preserving the WebSocket until a terminal remote outcome is received. All attach termination paths explicitly abort the writer before returning, so retaining the sender fixes premature EOF shutdown without introducing a reachable hang or cleanup failure.
|
| Filename | Overview |
|---|---|
| crates/alien-cli/src/commands/debug.rs | Retains the input sender for the attach-session lifetime and adds a realistic delayed-exit regression test; no actionable defect was found. |
Sequence Diagram
sequenceDiagram
participant Stdin as Local stdin
participant Attach as Attach session
participant Writer as WebSocket writer
participant Remote as Remote peer
Stdin-->>Attach: EOF
Note over Attach,Writer: Session-owned sender keeps input channel open
Remote-->>Attach: Delayed exit/error frame
Attach->>Writer: Abort writer
Attach-->>Attach: Return remote result
Reviews (1): Last reviewed commit: "fix(cli): keep remote exec alive after s..." | Re-trigger Greptile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
For non-interactive remote exec commands, local stdin can reach EOF immediately. The stdin forwarding task then drops the last input sender, causing the WebSocket writer to close the session before a slower remote command reports its exit status.
Fix
Keep one input sender owned by the attach session. Stdin EOF now means only that no more input will be sent; the WebSocket remains open until the remote exit/error frame, timeout, or cancellation.
The regression test uses a real local WebSocket peer: stdin reaches EOF first, the peer sends a delayed exit frame, and the attach call must still succeed.
Validation
cargo test -p alien-cli commands::debug::testsgit diff --check