OUTAGE: paliad.de container down — schema_migrations stuck at 106 while main has 123 #104
Reference in New Issue
Block a user
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?
Diagnosis (head, 2026-05-25 15:37)
m reports paliad.de returns 404 on every path. Confirmed:
That's Traefik's default 404 — no healthy upstream backend.
Schema is stuck 17 migrations behind
Repo main is on commit
51fca93, migrations 107–123 all checked in. The container is either failing to boot somewhere between 107 and 123, OR Dokploy auto-deploys have been failing silently and the production binary is months old.Likely candidates (per project CLAUDE.md traps)
ALTER TABLE/FUNCTION ... OWNER TO postgresvia supabase MCP.docker-compose.ymlenv-list gap — a recent merge introduced a${VAR}reference but didn't declare it underservices.web.environment:. Same trap as t-paliad-238 Add-User 503.What to do — fixer workflow
Triage: hit Dokploy API for the paliad compose status + last build log:
Or read the compose ID
Zx147ycurfYagKRl_Zzyoon mlake directly. paliad CLAUDE.mdHosting: Dokploy compose on mlake (72.62.52.189).Logs: pull the container's last 200 lines of stdout/stderr from Dokploy or ssh mlake + docker logs.
Identify the failing migration / step. Patterns to look for:
failed to migrate: …→ migration error; find the offending migration file + diagnosemust be owner of …→ ownership trap; fix via Supabase MCPALTER ... OWNER TO postgrespq: column "X" does not exist→ schema mismatch; data shape vs DDLFix: smallest correct change. Document the root cause in the completion report.
Re-deploy: trigger Dokploy redeploy + verify schema_migrations now equals the latest file in
internal/db/migrations/.Verify:
curl https://paliad.de/healthzreturns 200;paliad.paliad_schema_migrationsversion matches main.Hard rules
mai/<worker>/outage-paliad-deploy.go build ./... && go test ./internal/... && cd frontend && bun run buildmust stay clean (probably already clean since the code-side compiles; bug is at deploy/migration time).Out of scope
Reporting
mai report completedwith: root cause + the migration / config that broke + how it was fixed + verification (curl healthz 200, schema_migrations.version equals latest file). Comment on this issue with the same.Root cause + fix (head, 2026-05-25 15:42)
Container was crashlooping with:
What happened:
123_backups.up.sqlto main (~12:00).paliad.applied_migrationsclaiming(123, 'de_inf_lg_replik_duplik_sequencing')at 13:24 — even though his file was never committed to disk.123_backups.up.sql, found the name mismatch, bailed at startup.Fix applied:
DELETE FROM paliad.applied_migrations WHERE version=123 AND name='de_inf_lg_replik_duplik_sequencing'. Container will retry, apply cronus's actual123_backupsSQL (which is idempotent + guarded), and boot. Monitoringhttps://paliad.de/healthzfor 200.Brunel's in-process DB changes for de.inf.lg.replik/duplik remain intact (DELETE only removed the applied_migrations marker, not the rule UPDATEs themselves). His eventual
124_de_inf_lg_replik_duplik_sequencing.up.sqlwill land with idempotent guards and no-op the DB state while recording the applied_migrations row properly.Lessons banked
paliad.applied_migrationsduring in-process testing. Test via supabase MCP queries OR a temp DB; never poke the production migration tracker.Follow-up
The Dokploy auto-deploy webhook + build pipeline is healthy; this was a DB-state issue, not infra. No infrastructure changes needed.
Closing this issue when paliad.de/healthz returns 200.