pid file handling issue
normalperson at yhbt.net
Thu Oct 24 02:03:38 UTC 2013
Michael Fischer <mfischer at zendesk.com> wrote:
> On Wed, Oct 23, 2013 at 5:53 PM, Eric Wong <normalperson at yhbt.net> wrote:
> > I read and stash the value of the pid file before issuing any USR2.
> > Later, you can issue "kill -0 $old_pid" after sending SIGQUIT
> > to ensure it's dead.
> That's inherently racy; another process can claim the old PID in the interim.
Right, but raciness goes for anything regarding pid files.
The OS does make an effort to avoid recycling PIDs too often,
and going through all the PIDs in a system quickly is
probably rare. I haven't hit it, at least.
> > Checking the mtime of the pidfile is really bizarre...
> Perhaps (though it's a normative criticism), but on the other hand, it
> isn't subject to the race above.
It's still racy in a different way, though (file could change right
> > OTOH, there's times when users accidentally remove a pid
> > file and regenerate by hand it from ps(1), too...
> Sure, but (a) that's a corner case I'm not particularly concerned
> about, and (b) it wouldn't cause any problems, assuming the user did
> this before any reload attempt, and not in the middle or something.
Having the process start time in /proc be unreliable because the server
has the wrong time is also in the same category of corner cases.
Also, can you check the inode of the /proc/$pid entry? Perhaps
PID files are horrible, really :<
More information about the mongrel-unicorn