fix(2): ghost F2-14b — add db start_period grace to base overlay

Run #2 base deploy: fresh mysql:8.0 init on the loaded cc-ci host (load ~8) took >6min
(InnoDB ~90s + system-tables + root-pw apply, starved by the app crash-loop churn), exceeding
the recipe's 1m db start_period (+6min retry grace) → swarm killed mysql mid-init (exit 137
unhealthy) → corrupt InnoDB redo logs → permanent deadlock (same signature as run #1's stale
vol). Widen db healthcheck start_period to 15m (matches app) so the slow first-boot finishes
before the healthcheck can fail it. Grace-only, masks no defect; bites base+head (published
recipe ships db start_period 1m everywhere) so overlay covers both. Torn down corrupt vol.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-30 17:58:12 +01:00
parent fe135d3d55
commit 3ca45c7308

View File

@ -19,7 +19,20 @@
# check still marks healthy immediately, so NO test/assertion is weakened and fast hosts are
# unaffected. It is idempotent on the head (head already ships 15m). Merges deeply onto the base
# healthcheck (test/interval/timeout/retries preserved; only start_period overridden).
#
# The `db` (mysql:8.0) healthcheck gets the same grace: on the loaded cc-ci host a FRESH mysql data
# dir init (InnoDB + system tables + root-password apply) takes ~6-10 min, far exceeding the recipe's
# 1m db start_period (+10×30s ≈ 6 min) — swarm kills mysql MID-INIT (exit 137 "unhealthy container"),
# leaving a half-written data dir whose InnoDB redo logs are corrupt ("Cannot create redo log files
# because data files are corrupt") → every restart fails → permanent deadlock. Widening the db
# start_period to 15m lets the slow first-boot init finish before the healthcheck can fail it. This
# bites BOTH base and head (the published recipe ships db start_period 1m everywhere), so the overlay
# applies on both (persists untracked across the head checkout) — a recipe-PR candidate too.
# Grace-only; masks no defect; weakens no test.
services:
app:
healthcheck:
start_period: 15m
db:
healthcheck:
start_period: 15m