On 11:44 Thu 09 Oct , Willy Tarreau wrote: > On Thu, Oct 09, 2014 at 12:35:10PM +0300, Apollon Oikonomopoulos wrote: > > Hi Willy, > > > > On 11:26 Thu 09 Oct , Willy Tarreau wrote: > > > Hi Apollon, > > > > > > On Wed, Oct 08, 2014 at 03:14:41PM +0300, Apollon Oikonomopoulos wrote: > > > > By default systemd will send SIGTERM to all processes in the service's > > > > control group. In our case, this includes the wrapper, the master > > > > process and all worker processes. > > > > > > > > Since commit c54bdd2a the wrapper actually catches SIGTERM and survives > > > > to see the master process getting killed by systemd and regard this as > > > > an error, placing the unit in a failed state during "systemctl stop". > > > > > > Then shouldn't we fix this by letting the wrapper die after receiving the > > > SIGTERM ? Otherwise I'm happy to merge your patch, but I'd rather ensure > > > that we don't encounter yet another issue. > > > > The wrapper does exit on its own when the haproxy "master" process > > exits, which is done as soon as all "worker" processes exit. The problem > > is that the wrapper wants to control all worker processes on its own, > > while systemd second-guesses it by delivering SIGTERM to all processes > > by default. > > OK, so I'm merging your patch if you think it's the best solution.
Well, I think it's the most sane thing to do and is behaviour-compatible with the current wrapper version. > > > > I'm really amazed by the amount of breakage these new service managers are > > > causing to a simple process management that has been working well for over > > > 40 years of UNIX existence now, and the difficulty we have to work around > > > this whole mess! > > > > I guess every new system has its difficulties and learning curve, > > especially when it breaks implicit assumptions that hold for a long > > time. > > Well, we're far away from the learning curve, we're writing a wrapper > to help a stupid service manager handle daemons, because the people who > wrote it did not know that in the unix world, there were some services > running in background. "ps aux" could have educated them by discovering > that there were other processes than "ps" and their shell :-/ Truth is, we're writing a wrapper to handle gracefully reloading HAProxy by completely replacing the master process. Other than that, systemd is plain happy with just HAProxy running in the foreground using -Ds. I even have a suspicion that we don't need the wrapper at all to do graceful reloading. I have to do some experiments on that and I'll come back to you. Thanks, Apollon