DarthSim / overmind

Process manager for Procfile-based applications and tmux
MIT License
2.84k stars 79 forks source link

Does overmind respond to SIGINT? #37

Closed jackkinsella closed 5 years ago

jackkinsella commented 5 years ago

I noticed on macos that when I press Control-C (i.e. send SIGINT), overmind doesn't terminate every process (in particular, webpack-dev-server, which may well be misbehaving 😈 ). Instead overmind says "Interrupting..." but hangs forever. Running overmind kill .overmind.sock from another terminal session finishes the job perfectly though, even when it's already hanging.

So I'm wondering if overmind is intended to respond to SIGINT or if overmind kill is always needed?

Here was my Procfile (FYI Rails 5.2)

web: bin/rails server -p 3000
worker:  bin/rake jobs:work
webpacker: bin/webpack-dev-server
guard: bundle exec guard
elasticsearch: elasticsearch

PS very cool piece of software. It addresses all the gripes I had with using Foreman in a modern Rails stack (logs messed up, challenging to inject a debugger)

Update: Pressing Control-C in foreman running the same Procfile terminates the processes as expected, though the output suggests that after failing with SIGINT, it escalated to SIGKILL five seconds later.

DarthSim commented 5 years ago

Hi,

When you sent SIGINT to Overmind, it sends it to all running processes. The second SIGINT will make Overmind to send SIGKILL to all misbehaving processes. Also, if some processes misbehave after the first SIGINT, Overmind will kill 'em all after a short timeout.

I had many headaches with webpack-dev-server too, so I developed Overmind to make sure it will kill that bad boy properly :)