fix(komga): bound the nginx readiness probes (#2961)

* fix(komga): bound the nginx readiness probes and log an exhausted wait

Follow-up to #2960, which merged one commit before this landed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix(komga): use a wall clock deadline for the readiness wait

An attempt count plus a per probe timeout stretched the wait to roughly twice
the advertised 15 minute ceiling.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Alexandre
2026-08-12 08:14:28 +02:00
committed by GitHub
parent 985f570263
commit cfcdd94ae6
3 changed files with 22 additions and 3 deletions

View File

@@ -1,3 +1,7 @@
## 1.26.1.1 (2026-08-11)
- Bound the nginx readiness probes (`--connect-timeout` / `--max-time`) so a stalled connection cannot hang the wait, and log a warning when Komga has not answered within 15 minutes
## 1.26.1 (2026-08-11)
- Initial release, based on gotson/komga ([changelog](https://github.com/gotson/komga/releases))

View File

@@ -101,4 +101,4 @@ schema:
slug: komga
udev: true
url: https://github.com/alexbelgium/hassio-addons/tree/master/komga
version: "1.26.1"
version: "1.26.1.1"

View File

@@ -8,12 +8,27 @@ set -e
# bashio::net.wait_for : bashio takes (port host timeout) while the bundled
# bashio-standalone.sh takes (host port timeout), and picking the wrong one
# would either fail instantly or block for the whole timeout.
for _ in $(seq 1 180); do
if curl -sf -o /dev/null "http://127.0.0.1:25600/komga/"; then
# The per probe timeouts keep the 15 minute ceiling real : without them a
# half open connection would hang a single probe, and the loop, forever.
# A wall clock deadline, not an attempt count : a failed probe costs up to
# max-time on top of the sleep, so counting attempts would stretch the wait to
# roughly twice the advertised ceiling.
komga_ready=false
deadline=$((SECONDS + 900))
while [ "$SECONDS" -lt "$deadline" ]; do
if curl -sf --connect-timeout 2 --max-time 5 -o /dev/null "http://127.0.0.1:25600/komga/"; then
komga_ready=true
break
fi
sleep 5
done
# Deliberately not fatal : nginx serving a 502 tells the user something is wrong
# and starts working by itself once komga finally answers, while refusing to
# start would take ingress down for good after ha_entrypoint gives up retrying.
if [ "$komga_ready" != true ]; then
bashio::log.warning "Komga did not answer within 15 minutes. Starting NGinx anyway : ingress will return 502 until it does."
fi
bashio::log.info "Starting NGinx..."
exec nginx