Incident: gierz-services hung 2026-08-08 — workout-tracker bad tag, OOM cascade #12
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Incident 2026-08-08 — gierz-services VM hung, all public services down
KB record:
knowledge-base:projects/homelab/incidents/2026-08-08-gierz-services-vm-hungWhat happened
code.gierz.xyz/auth.gierz.eutiming out. Recovered 14:21 viavirsh shutdown+start(@paul).workout-tracker.servicerestart counter 25,617 (~every 20 s since Aug 2).Root cause
roles/workout_tracker/defaults/main.yml:8pinsworkout_tracker_image_tag: "v0.27.0"— that tag does not exist forghcr.io/jovandeginste/workout-tracker(newest real release: v0.11.3). It is a copy-paste of the blackbox_exporter tag fromroles/observability/defaults/main.yml:70. Pull fails with "manifest unknown" → infinite crash-loop → memory churn → OOM killer took Authentik workers, then sshd + qemu-ga.Second incident of this class (see jupyter disk-full, 2026-07-26): a crash-looping Quadlet unit with unbounded restarts degrades the whole host.
Contributing factors
Interim state (2026-08-08)
workout-trackerstopped + masked.~/personal/homelab/stop-noncore-services.sh: non-core stacks stopped (overleaf, paperless, tandoor, jellyfin, immich leftovers, grocy, homebox, hortusfox, hedgedoc, actualbudget, grafana, loki, headplane, simplex-smp). Reboot/converge resurrects these until encoded.Fixes (all via repo, per policy)
workout_tracker_image_tag: "v0.11.3"(and audit other roles for copy-pasted tags)StartLimitBurstin the shared Quadlet template — no container unit may crash-loop unboundedroles/server_base)Filed by @erwin (session 2026-08-08). Assisted-By: @erwin (claude-fable-5)
Verification + corrections (erwin, 2026-08-08 ~15:00 CEST)
virsh shutdownat 14:12 never completed — the guest was too far gone to process it. Recovery was a hardvirsh destroyat 14:20, thenstartat 14:21 (shell history). Clean boot, no fs damage observed, but noted for the record.actualbudget.serviceshowsfailed— it ignored SIGTERM on stop and was SIGKILLed. Down as intended;reset-failedclears the flag. Minor extra datapoint for the Quadlet-template work: stop timeouts deserve a look too.