Hi Alex,

thanks for the quick reply. I actually had stumbled across the mentioned Bug and first thought, "hey, great, exactly my problem", but then was so confused by the initial posts mixing up several issues at once that I quit reading (and in addition had some misconceptions about SMP vs. Multiple Instances of squid myself).

AFAICT, that is what your patch correctly
does inside watch_child(), among many other changes that look wrong or
unfinished.
Shortly after posting, I noticed some problems with my patch (IamWorker, IamMaster returning non-sense and in consequence, serverConnectionsOpen not being called with only a single worker). I was able to patch that behavior and have both setups running correctly now (both with -N, forking children if workers > 1, else staying a single process). The overall idea was to make the decision to create and manage kids to depend on the number of configured workers/diskers. But I start to think that this is not very wise because it prevents adding worker processes by just reloading the configuration? Or am I mistaken and it actually is possible? If it is, the -N and --foreground options would be somehow redundant even after rephrasing.

In summary, the things should work like this IMO:

* -N: The initial process is a master and a worker process.
       No kids.
       No daemonimization.

* --foreground: The initial process is the master process.
       One or more worker kids (depending on workers=N).
       No daemonimization.

* neither: The initial process double-forks the master process.
       One or more worker kids (depending on workers=N).
       Daemonimization.

I think I can agree to that. If my musings above are correct, -N should probably also get a notice that it is not possible to add/remove workers dynamically. And it should definitely not be termed "no daemon"-mode, as that is what --foreground will probably do in the future.

What I get from http://bugs.squid-cache.org/show_bug.cgi?id=3826#c40 is, that the mentioned setup works because systemd broadcasts (KillMode=mixed) the signals to all child processes. AFAIK, other supervision schemes like runit (which we are using), are capable of that and TBH, I think it is a rather hacky workaround.

Would you be willing to fix Squid to match the above summary?
Yes. I'll try. I fear that it won't be easy to make it correct for all setups (e.g., the systemd stuff above). Also, the IamDaemon() function should probably be renamed to UseMasterProcess (or similar). The historically grown confusing mix of configuration options and command line options that partially overlap each other add to the fun. I hope I can cope ;-)

Kind Regards,

Andreas

--
Mit freundlichem Gruß / Best regards,

Andreas Weigel
UTM Backend Developer

Securepoint GmbH
Salzstrasse 1
D-21335 Lüneburg

https://www.securepoint.de

Tel.: +49(0)413124010
Fax: +49(0)4131240118

Geschäftsführer: Lutz Hausmann, Claudia Hausmann
Amtsgericht Lüneburg HRB 1776
USt.-ID-Nr.: DE 188 528 597

_______________________________________________
squid-dev mailing list
[email protected]
http://lists.squid-cache.org/listinfo/squid-dev

Reply via email to