Repository navigation
fix(server): close stdin for noninteractive process runs - #10583
yashranaway wants to merge 1 commit into
Conversation
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This is a small, well-scoped process-runner fix with focused integration coverage, but it changes the default stdin behavior for every run that omits input. That broad default behavior change warrants human review. Notes:
You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan provides up to 10 included reviews per hour; 5 remain after this review. 📝 WalkthroughWalkthroughThe process runner now ignores unused stdin and pipes provided stdin. Integration tests validate omitted, empty, and Unicode input with real child processes. ChangesProcess stdin handling
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to Noninteractive child processes now receive EOF when no input is provided, avoiding unnecessary waits, while explicit empty and Unicode input continue to be delivered. The covered behavior is ready to merge with no current actionable risk identified. Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Note Written by Thanks for this. I'm closing it as part of PR triage. We couldn't confirm a bug that users actually hit here. From the review: Omitted stdin remains open, but reproduction only runs a purpose-built child; no supported command or user workflow is shown hanging. It has also had no activity for 38 days. If this is still important to you, message me on Twitter at @maria_rcks and I'll take another look. |
What Changed
The noninteractive process runner uses ignored stdin when no input was supplied. Explicit empty or nonempty input still uses a pipe and is delivered before EOF.
Why
The default piped stdin was left open when
stdinwas omitted. A child that reads until EOF could wait indefinitely even though this runner has no interactive input channel.Testing
Model: GPT-6 Astra
Harness: T3 code
Note
Close stdin for noninteractive process runs in
runProcessCoreSets the child-process spawn
stdiooption so stdin isignorewhen the caller omits stdin and apipewhen stdin is supplied. Previously an unused pipe was left open, causing noninteractive processes to hang waiting for EOF.Adds integration tests in processRunner.test.ts that spawn the current Node executable and verify EOF, expected input, exit code, and timeout behavior across omitted, empty, and non-empty Unicode stdin cases.
Macroscope summarized b8a9847.
Summary by CodeRabbit