From 47a1e9fc90b09cccb7ea8e880dfb999257b08e2f Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Sun, 19 Feb 2023 13:53:41 -0300 Subject: [PATCH] Add timeout to go2rtc healthcheck --- docker/rootfs/etc/s6-overlay/s6-rc.d/frigate/finish | 10 +++------- .../etc/s6-overlay/s6-rc.d/go2rtc-healthcheck/run | 2 +- .../s6-overlay/s6-rc.d/go2rtc-healthcheck/timeout-kill | 1 + docker/rootfs/etc/s6-overlay/s6-rc.d/nginx/finish | 6 +++--- 4 files changed, 8 insertions(+), 11 deletions(-) create mode 100644 docker/rootfs/etc/s6-overlay/s6-rc.d/go2rtc-healthcheck/timeout-kill diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/frigate/finish b/docker/rootfs/etc/s6-overlay/s6-rc.d/frigate/finish index d83c1a6e6..9a2de8ddd 100755 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/frigate/finish +++ b/docker/rootfs/etc/s6-overlay/s6-rc.d/frigate/finish @@ -11,20 +11,16 @@ readonly exit_code_service="${1}" readonly exit_code_signal="${2}" readonly service="Frigate" -echo "Service ${service} exited with code ${exit_code_service} (by signal ${exit_code_signal})" >&2 +echo "[INFO] Service ${service} exited with code ${exit_code_service} (by signal ${exit_code_signal})" >&2 if [[ "${exit_code_service}" -eq 256 ]]; then if [[ "${exit_code_container}" -eq 0 ]]; then - echo $((128 + exit_code_signal)) > /run/s6-linux-init-container-results/exitcode + echo $((128 + exit_code_signal)) >/run/s6-linux-init-container-results/exitcode fi elif [[ "${exit_code_service}" -ne 0 ]]; then if [[ "${exit_code_container}" -eq 0 ]]; then - echo "${exit_code_service}" > /run/s6-linux-init-container-results/exitcode + echo "${exit_code_service}" >/run/s6-linux-init-container-results/exitcode fi -else - # Exit code 0 is expected when Frigate is restarted by the user. In this case, - # we create a signal for the go2rtc finish script to tolerate the restart. - touch /dev/shm/restarting-frigate fi exec /run/s6/basedir/bin/halt diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/go2rtc-healthcheck/run b/docker/rootfs/etc/s6-overlay/s6-rc.d/go2rtc-healthcheck/run index 556be8a0a..cb30be980 100755 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/go2rtc-healthcheck/run +++ b/docker/rootfs/etc/s6-overlay/s6-rc.d/go2rtc-healthcheck/run @@ -8,7 +8,7 @@ echo "[INFO] Starting go2rtc healthcheck service..." >&2 while sleep 1m; do # Check if the service is running - if ! curl -fsSL http://127.0.0.1:1984/api/streams >/dev/null; then + if ! timeout 10s curl -fsSL http://127.0.0.1:1984/api/streams >/dev/null; then echo "[ERROR] The go2rtc is not responding to ping, restarting it..." >&2 # We can also use -r instead of -t to send kill signal rather than term s6-svc -t /var/run/service/go2rtc diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/go2rtc-healthcheck/timeout-kill b/docker/rootfs/etc/s6-overlay/s6-rc.d/go2rtc-healthcheck/timeout-kill new file mode 100644 index 000000000..e9c02dad1 --- /dev/null +++ b/docker/rootfs/etc/s6-overlay/s6-rc.d/go2rtc-healthcheck/timeout-kill @@ -0,0 +1 @@ +5000 diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/nginx/finish b/docker/rootfs/etc/s6-overlay/s6-rc.d/nginx/finish index 01c37d192..0516c8180 100755 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/nginx/finish +++ b/docker/rootfs/etc/s6-overlay/s6-rc.d/nginx/finish @@ -11,18 +11,18 @@ readonly exit_code_service="${1}" readonly exit_code_signal="${2}" readonly service="NGINX" -echo "Service ${service} exited with code ${exit_code_service} (by signal ${exit_code_signal})" >&2 +echo "[INFO] Service ${service} exited with code ${exit_code_service} (by signal ${exit_code_signal})" >&2 if [[ "${exit_code_service}" -eq 256 ]]; then if [[ "${exit_code_container}" -eq 0 ]]; then - echo $((128 + exit_code_signal)) > /run/s6-linux-init-container-results/exitcode + echo $((128 + exit_code_signal)) >/run/s6-linux-init-container-results/exitcode fi if [[ "${exit_code_signal}" -eq 15 ]]; then exec /run/s6/basedir/bin/halt fi elif [[ "${exit_code_service}" -ne 0 ]]; then if [[ "${exit_code_container}" -eq 0 ]]; then - echo "${exit_code_service}" > /run/s6-linux-init-container-results/exitcode + echo "${exit_code_service}" >/run/s6-linux-init-container-results/exitcode fi exec /run/s6/basedir/bin/halt fi