Browse Source

[Watchdog] Fix kill -0 check, use tini and send kill request to tini instead of parent pid, sleep longer

André 8 years ago
parent
commit
ac413058c1

+ 2 - 1
data/Dockerfiles/watchdog/Dockerfile

@@ -1,5 +1,4 @@
 FROM alpine:3.6
-
 LABEL maintainer "André Peters <andre.peters@servercow.de>"
 
 # Installation
@@ -23,10 +22,12 @@ RUN apk add --update \
 	perl-socket6 \
 	perl-mime-lite \
 	perl-term-readkey \
+  tini \
 	&& curl https://raw.githubusercontent.com/mludvig/smtp-cli/v3.8/smtp-cli -o /smtp-cli \
 	&& chmod +x smtp-cli
 
 COPY watchdog.sh /watchdog.sh
 
+ENTRYPOINT ["/sbin/tini", "-g", "--"]
 # Less verbose
 CMD /watchdog.sh 2> /dev/null

BIN
data/Dockerfiles/watchdog/tini


+ 3 - 4
data/Dockerfiles/watchdog/watchdog.sh

@@ -2,7 +2,6 @@
 
 trap "exit" INT TERM
 trap "kill 0" EXIT
-PARENT_PID=$$
 
 # Prepare
 BACKGROUND_TASKS=()
@@ -351,12 +350,12 @@ BACKGROUND_TASKS+=($!)
 (
 while true; do
   for bg_task in ${BACKGROUND_TASKS[*]}; do
-    if ! kill -0 ${bg_task} 21>&2; then
+    if ! kill -0 ${bg_task} 1>&2; then
       echo "Worker ${bg_task} died, stopping watchdog and waiting for respawn..."
       log_to_redis "Worker ${bg_task} died, stopping watchdog and waiting for respawn..."
-      kill -TERM ${PARENT_PID}
+      kill -TERM 1
     fi
-    sleep 1
+    sleep 10
   done
 done
 ) &