DarthSim / overmind

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

overmind weird behaviors #58

Closed antoinelyset closed 4 years ago

antoinelyset commented 4 years ago

Hey all ! I'm sorry to bother you but since I upgraded overmind from 1.X to the last version (2.0.3). It behaves weirdly.

First it does not log the combined output of all commands when launched with overmind start -f Procfile.dev -p 3000. Second, the restart does not really restart the commands, it is stuck indefinitely (tmux version 2.9a).

Did I do something wrong ? Is there something I could do to help me/you debug ?

DarthSim commented 4 years ago

Hi,

First it does not log the combined output of all commands when launched with overmind start -f Procfile.dev -p 3000.

Do you mean it doesn't show processes' output at all? Or it shows the output of the part of the processes?

Second, the restart does not really restart the commands, it is stuck indefinitely

What state does it stick in?

antoinelyset commented 4 years ago

Hi!

Sorry for this very basic bug report.

When I say no output, it just starts to log

system                        | Tmux socket name: overmind-rails-ugi6PxxreT6-g1bkTWv752
system                        | Tmux session ID: drivy-rails
system                        | Listening at /Users/lyset/Documents/rails/.overmind.sock
webpack                       | Started with pid 7373...
mailcatcher                   | Started with pid 7372...
sidekiq_worker_test_scenarios | Started with pid 7371...
sidekiq_worker                | Started with pid 7370...
web_https                     | Started with pid 7369...
web                           | Started with pid 7368...

Then there is no more output.

For the restart, if I do something like overmind r web, it just says Pane is dead (status 0, Mon Oct 14 14:38:37 2019)

antoinelyset commented 4 years ago

Okay, after debugging for a long time, I found that this line was causing trouble.

mailcatcher:      pkill -f mailcatcher > /dev/null 2>&1 ; ruby -rbundler/setup -e "Bundler.clean_exec('mailcatcher -f --http-ip 127.0.0.1')"

Particularly this part of the command pkill -f mailcatcher > /dev/null 2>&1 ;. I know that this is not really optimal in a Procfile but before removing it, do you see why it causes these weird behaviors?

DarthSim commented 4 years ago

Well, you shot yourself in the foot :)

When you run pkill -f mailcatcher, it searches all processes containing mailcatcher in their names and/or arguments. Doing this you kill tmux client used by Overmind, and Overmind becomes stuck.

It's an interesting case, and I'll try to implement tmux's respawn, but it's still not a good idea to kill something by such an ambiguous pattern inside Procfile.

antoinelyset commented 4 years ago

Oh okay! Strangely it was perfectly working with v1. That's why I shared it and did not close the issue immediately.

Thanks a lot for your answers. For the record, I removed this pkill because it wasn't useful.

DarthSim commented 4 years ago

v1 worked with tmux in a completely different way.