-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[turborepo] regression on handling SIGINT #3711
Comments
I am actually facing the same issue with version |
Tagging @jaredpalmer for visibility |
May be fixed by #4276, could you verify against v1.8.5? |
Hey @mehulkar, I might be wrong, but I would say the issue persist. I updated the reproduction repo to use |
Thanks for trying! cc @arlyon @chris-olszewski |
### Description I believe this fixes #3711 #4196 added graceful shutting down when calling `go-turbo`, this does the same but for when we need to invoke the correct Rust binary in `shim.rs`. I extracted the logic added in #4196 to a function that can be used throughout the codebase. ### Testing Instructions Currently only doing manual via the reproduction provided in #3711. Edit: I originally wanted to add integration test to cover these cases, this has proven to be a challenge. Will still look at trying to orchestrate a test for this, but considering how much traction the related issues have, I don't want to block on getting an integration test.
@chris-olszewski I just saw a new Could you please reopen the issue? |
@notaphplover, can you confirm the expected outcomes of sending a Also, if you need an exit code 0, could you change the trap command to |
Hi @chris-olszewski 😃.
On my machine Regarding which version introduced this (I think) unexpected behavior, I tried with
Yeah, I know, the thing is, that's not what I want. I want to exit with code zero if and only if the process is able to exit gracefully with no issues. For that reason I want to Hope all of this helps. I would prefer not to pass through the pain of setting the remote debugging session, but if you really need it I can go for it in a couple of days. Edit: I just realized the debugging session wouldn't be of any help 😅, but the ssh connection would allow you to connect to the gh runner and recreate the issue. Probably an overkill since docker seems a much simpler way to go |
No need to, I just wanted to make sure that the description in the repro was correct and my machine was doing something weird.
Thanks for confirming, this narrows the code changes to check quite a lot.
Understand, just wanted to check if that would provide any intermediate relief. Sorry again for the drop in communication. |
All good. This is an open source project after all. Love the beautiful work you're doing. Sometimes these issues happen, I simply opened the other issue to avoid losing the tracking. |
@notaphplover I had some time to delve into this and this is a larger feature request. We currently always exit with exit code 1 if we receive a signal. In order to return the highest exit code we need to start gracefully handling signals where the first I don't expect this work will get done until we finish porting the codebase to Rust. Hopefully as we port this signal code we can set the groundwork for being more graceful with our signal handling. |
Is this working or will be fixed anytime soon? I'm having some issues that docker doesn't close when I do |
Experiencing the same issue, |
Possibly related: Ctrl+C while running the internal |
I found something that might be useful for addressing this issue: |
We are observing same issue :( |
Seeing same issue where docker fails to teardown when using turbo |
Same here in turbo |
What version of Turborepo are you using?
1.7.4
What package manager are you using / does the bug impact?
npm
What operating system are you using?
Linux
Describe the Bug
Referring to #444 and its implementation on #663, it looks like there was a behavioural regression introduced in
1.7.0
where SIGINT is no longer handled properly. The last working version was1.6.3
.The bug is related to the fact that when interrupting a program (
^C
), turbo doesn't wait for the program to handle the SIGINT command and immediately terminates the process.It is worth noting that the SIGINT instruction continues to run in the background, and the terminal becomes interactive again. This poses a problem when running turbo from a Docker container, for example, while Docker waits for the SIGINT instruction to be handled and then kills the container process. Since turbo doesn't wait for SIGINT to complete, docker simply kills the process prematurely. The expected behaviour here would be that of
1.6.3
.Expected Behavior
Turbo should wait for the program to handle the
SIGINT
instruction and only then exit the running process.To Reproduce
./apps/bar/package.json
turbo@1.6.3 (expected behaviour)
turbo@1.7.0 (unexpected behaviour)
Reproduction Repo
No response
The text was updated successfully, but these errors were encountered: