You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: close stdin for non-interactive tasks (#8838)
### Description
Fixes#8281
With this PR we now close `stdin` for any task that is not marked as
`"interactive": true` or `"persistent": true`.
**Explanation**
The `del-cli dbschema/edgeql-js dbschema/interfaces.*` part of
`dram:codegen` task waits for user input if `stdin` isn't closed even if
it isn't hooked up to a TTY:
```
dram:codegen: Checking the generated query builder into version control
dram:codegen: is not recommended. Would you like to create a .gitignore file to ignore
dram:codegen: the query builder directory? [y/n] (leave blank for "y")
```
This caused the task to never exit since there was no user to answer the
prompt.
The prompt was never surfaced as GH Action runs have logs grouped
together by default and they are not flushed if a run is interrupted
before it finishes.
**How We Got Here**
- We discovered that we were unintentionally letting starting child
processes with inherited `stdin`. We disabled this in
#7034 and shifted to never opening
`stdin` for some child processes.
- We started opening `stdin` for persistent tasks in
#7196 as starting without `stdin`
caused issues for some tools e.g. vite
- #7767 changed behavior so *all*
tasks started with `stdin`, but only some would receive input. We forgot
to update the closing logic to close `stdin` for the tasks that
shouldn't have it.
**Future Work**
We should invest time into fixing #6514 so that this prompt would have
been seen on the CI runs. Seeing the prompt would've made the issue
obvious.
### Testing Instructions
Verify that running `vite` server with streamed logs doesn't crash:
```
[0 olszewski@chriss-mbp] /tmp/vite-test $ TURBO_UI=0 turbo_dev dev
WARNING No locally installed `turbo` found. Using version: 2.0.10-canary.0.
• Packages in scope: @repo/eslint-config, @repo/typescript-config, @repo/ui, docs, web
• Running dev in 5 packages
• Remote caching disabled
web:dev: cache bypass, force executing d3eae62c93d9ce57
docs:dev: cache bypass, force executing c838417f19c48cfb
docs:dev:
docs:dev: > [email protected] dev /private/tmp/vite-test/apps/docs
docs:dev: > vite --clearScreen false
docs:dev:
web:dev:
web:dev: > [email protected] dev /private/tmp/vite-test/apps/web
web:dev: > vite --clearScreen false
web:dev:
web:dev:
web:dev: VITE v5.1.4 ready in 81 ms
web:dev:
web:dev: ➜ Local: http://localhost:5173/
web:dev: ➜ Network: use --host to expose
web:dev: ➜ press h + enter to show help
docs:dev: Port 5173 is in use, trying another one...
docs:dev:
docs:dev: VITE v5.1.4 ready in 88 ms
docs:dev:
docs:dev: ➜ Local: http://localhost:5174/
docs:dev: ➜ Network: use --host to expose
docs:dev: ➜ press h + enter to show help
```
Huge kudos to @jakubmazanec for remaining active on the issue while we
figure this out.
0 commit comments