Why workers die when sending KILL to master?
normalperson at yhbt.net
Sat Jan 9 17:41:29 EST 2010
Iñaki Baz Castillo <ibc at aliax.net> wrote:
> Hi, in my customized "unicorn" executable I create N forks in master process
> to behave as posix_mq readers.
> I added a "at_exit" block just in master process so they are killed when the
> master receives a signal to terminate.
> The only issue I'm experimenting is the fact that they are not killed if the
> master process receives a KILL signal. However Unicorn workers are terminated
> after master is killed with KILL signal. Could I know how such cool feature is
> AFAIK when a process receives a KILL signal it just dies and cannot capture
> such signal so this should be a feature implemented in workers (in some way
> they can detect if master has died, am I right?). If so, could I be pointed to
> the exact code in which the feature is implemented? I would like to replicate
> it in my extra-processes.
The worker_loop just compares Process.ppid with the original ppid it
was started with. They wakeup from IO.select() every timeout/2 seconds
to check for original_ppid != ppid if the server is idle.
More information about the mongrel-unicorn