Neatomický zápis sady souvisejících řádků — částečný den v telemetrii
import { Aside } from ‘@astrojs/starlight/components’;
Symptom
Sekce “Symptom”Denní log stavových metrik zapisoval 4 řádky (metrika × den) samostatnými upserty. Test se selháním třetího zápisu ukázal 2 řádky v DB — den vypadal „částečně změřeně” a monitoring nad ním by počítal zkreslené podíly.
Root cause
Sekce “Root cause”Zapisovač vznikl jako smyčka upsertů bez transakce; každý úspěšný zápis byl commitnutý okamžitě. Atomicita „dne” nebyla nikde vyjádřena.
Fix
Sekce “Fix”Všechny řádky dne se skládají jako líné operace a provádějí jedinou batch $transaction (rollback = 0 řádků). Klasifikovaná tolerance: tabulka neexistuje (P2021) → warn a žádný zápis; jakákoli jiná chyba → error log bez pádu jobu, ale nikdy částečný den. Test: selhání 3. operace ⇒ v DB nezůstane nic.
Poučení
Sekce “Poučení”Atomicitu si vyžádej v návrhu zapisovače, ne až v post-mortem čtenáře dat.