← EP21 Internal Docs EP21 Backup Engine
ADR · ADR-0004 · v1.0.0

Partial Run Status — Always-Written Run Metadata

accepted v1.0.0 Authors: david.sorf Created: 2026-02-24 Updated: 2026-04-09
metadata run-status reliability observability trap
db_bkup.sh vždy zapíše run metadata (run.<run_ts>.json + run.latest.json) bez ohledu na výsledek běhu. Stav je buď 'success' (exit 0) nebo 'partial' (nenulový exit). Implementováno přes bash trap on_exit EXIT.
Related docs:

Kontext

Při chybách (síťový výpadek, chyba pg_dump, nedostupný kontejner) musí existovat konzistentní auditní stopa o průběhu runu. Bez tohoto by selhaný běh nezanechal žádné strojově čitelné informace — monitoring by nemohl rozlišit mezi "backup neproběhl" a "backup proběhl ale selhal".

Zvažované alternativy:

A) Zapsat metadata pouze při úspěchu — ztráta auditní stopy při selhání

B) Zapsat vždy via trap EXIT (zvoleno) — garantovaný zápis i při neočekávaném ukončení

C) Externínotifikační systém — příliš složité, externí závislost

Rozhodnutí

✓ Chosen: B — vždy zapsat run metadata přes bash trap on_exit EXIT

db_bkup.sh registruje handler přes trap on_exit EXIT. Handler se zavolá vždy při ukončení skriptu — ať už normálním exit, chybou, nebo signálem.

Stav runu:

  • status: success — exit code 0, všechny DB zálohovány
  • status: partial — nenulový exit, záloha proběhla jen částečně

Metadata obsahují:

  • last_step — poslední úspěšně dokončený krok (pro post-mortem debugging)
  • error — chybová zpráva pokud je k dispozici
  • exit_code — skutečný exit kód procesu

Výstupní soubory:

  • meta/inventory/run.<run_ts>.json — timestampovaný záznam
  • meta/inventory/run.latest.json — symlink na poslední run (vždy aktuální)

Tento přístup je součástí metadata-first designu (ADR-0001) — metadata jsou zdrojem pravdy i o neúspěšných bězích.

Důsledky

Pozitivní:

Negativní:

Changelog

VersionDateAuthorNote
1.0.02026-04-09david.sorf + claude-sonnet-4-6

Migrace z doc/ADR/ADR-0004-partial-run-status.md do DAK JSON formátu. Rozšířeno o alternativy A/B/C, detail trap mechanismu, popis všech metadata polí a vazbu na ADR-0001.