On 21/05/2014 4:10 p.m., Cinaed Simson wrote: > On 05/20/2014 08:46 AM, fernando wrote: >> Hi, >> >> I don't know if this affects only the RPM packaging or squid sources. I'm >> using Eliezer packages for CentOS 6, namely 3.4.3-1.el6.x86)64. >> >> The issue is that sometimes "service squid restart" leaves old squid >> processes running alongside newer ones. I have to "killall squid" and start >> again to have a working proxy. >> >> I see "squid -k shutdown" does not wait for all squid kids to stop, and >> this makes init.d/squid to leave such broken restart. >> >> I coud just increate SQUID_SHUTDOWN_TIMEOUT at /etc/sysconfig/squid so the >> init.d/squid script wait a little longer, but i think the restart command >> should be more robust. So I propose the following simple change to the >> init.d/squid script: >> >> --------------- >> restart() { >> stop >> RETVAL=$? >> if [ $RETVAL -eq 0 ] ; then >> rm -rf $SQUID_PIDFILE_DIR/* >> start >> else >> echo "Failure stopping squid or stopping squid took too long. Please check >> before restarting." >> return 1 >> fi >> } >> --------------- >> >> Instead of blindly calling start after stop, check if the stop function >> returned ok or an error status code. >> >> I think it's better having restart fail sometimes than having broken squid >> processes after restart. >> >> []s, Fernando Lozano >> > > The problem as I see it is there needs to be timeout (or a wait) between > stop and start in restart. > > The stop branch returns immediately and then executes the start branch > which sees the pid file (since the controlling squid is waiting for the > children to complete their processes) and claims squid already running > and exits. > > So when the controlling squid finally stops and removes the pid file the > start branch has already exited and the server doesn't restart. > > I'm not an expert on squid but I would not recommend removing the pid > file before squid controller has exited. > > If it never stops then you have different problem. The problem seems to be that the script is trying to jig up its own sequence when squid -k restart provides a well tested and standard method already. Amos