[Pkg-haproxy-maintainers] Bug#804530: Bug#804530: Bug#804530: Bug#804530: haproxy: Ensure stop action works on pre-systemd versions of Debian (and Ubuntu)

Apollon Oikonomopoulos apoikos at debian.org
Mon Nov 9 13:09:38 UTC 2015


On 15:01 Mon 09 Nov     , Apollon Oikonomopoulos wrote:
> If we're going to support this, I would like to avoid parsing program 
> output. We could check the dpkg version (e.g. using dpkg 
> --compare-versions) and fall back to the kill loop if dpkg is older 
> than 1.17.6, or we could keep the loop as is but create a temporary 
> pidfile for each PID and pass the temporary pidfile to 
> start-stop-daemon with `--pidfile` instead of `--pid`. Both approaches 
> sound a bit hackish, but the second is probably less so.

IOW, something along these lines:

diff --git a/debian/haproxy.init b/debian/haproxy.init
index 35af505..2852efa 100644
--- a/debian/haproxy.init
+++ b/debian/haproxy.init
@@ -62,8 +62,10 @@ haproxy_stop()
 
        ret=0
        for pid in $(cat $PIDFILE); do
+               tmppid="$(mktemp)"
                start-stop-daemon --quiet --oknodo --stop \
-                       --retry 5 --pid $pid --exec $HAPROXY || ret=$?
+                       --retry 5 --pidfile "$tmppid" --exec $HAPROXY || ret=$?
+               rm -f "$tmppid"
        done
 
        [ $ret -eq 0 ] && rm -f $PIDFILE


Note that s-s-d has a '--remove-pidfile' option, but this is again too new (>= 1.17.19).



More information about the Pkg-haproxy-maintainers mailing list