Přeskočit na obsah

Dostupné

Replika a checkpoint

Replika je jediná věc v systému, která se nedá znovu postavit z ničeho jiného. Všechno ostatní je odvozené. Proto se o její konzistenci rozhoduje na úrovni transakce, ne na úrovni dobré vůle.

Položky fáze
1.3 replika a checkpoint, 1.4 poller s výhradním leasem
Závisí na
1.1 — typovaně naparsované akce
Vstup už existuje
archiv surového feedu 1. 7.–9. 9. 2026, 849 935 událostí, jen lokálně
Invarianty
ING-1 až ING-7 v docs/INGESTION.md
Stav
1.3 a 1.4 hotovo 30. 9. 2026 — ingest/replica.py, ingest/poller.py, worker just worker; backfill pod počátkem repliky po souvislých blocích hotový 1. 10. 2026 — ingest/backfill.py, ADR 0011

Zápis a checkpoint v jedné transakci

Checkpoint je jediné číslo: poslední trvale zpracovaná akce. Posouvá se ve stejné transakci, ve které se zapisují akce — jinak existuje okno, ve kterém pád znamená přeskočenou dávku.

Ze dvou možných chyb je zvolená ta neškodná. Pád před commitem vede k opětovnému načtení téže dávky, a protože je zápis idempotentní podle ID akce, druhý průchod nic nezmění. Pád po posunu checkpointu bez zápisu by naopak vedl k díře, kterou nikdo nikdy nenajde.

# Smyčka příjmu. Feed vlastní právě jeden poller. Zápis akcí a posun checkpointu proběhnou v jedné transakci; chyba parsování checkpoint nikdy neposune.

Barva uzlu je stav položky na roadmapě: Dostupné

Jeden vlastník feedu

Feed čte právě jeden poller, držící lease s omezenou platností. Dva souběžní polleři si duplikují práci a závodí o checkpoint; obojí je horší než pomalejší běh.

Chyba parsování ani chybový stav zdroje checkpointem nikdy nepohnou. Zpět se checkpoint posune jen výslovným zásahem operátora podle runbooku.

Co replika není

Není to aktuální stav a není to místo, kde se opravují chyby v interpretaci. Akce se nemění a nemažou; oprava je vždy na straně projektoru. Tím se z opravy stává rutina, která nesahá na zdroj dat.

Repliku jde naplnit i z lokálního archivu feedu bez jediného dotazu na rejstřík: každá dávka se před načtením ověří hashem a replika si zapíše, odkud je úplná (ingest/archive.py). Historii pod tím doplňuje backfill po souvislých blocích (ingest/backfill.py, ADR 0011).

Kde to v repozitáři žije

  • src/progresus_isir/ingest/replica.py — zápis dávky a posun checkpointu v jedné transakci
  • src/progresus_isir/ingest/poller.py — jeden ohraničený tick pod leasem
  • docs/INGESTION.md — poll smyčka, invarianty a vztah backfillu k živému provozu
  • docs/ARCHITECTURE.md — co je nedotknutelné a co odvozené
  • docs/runbooks/replay.md — operátorský postup přehrání, včetně posunu checkpointu

Souvisí

Zpět na sekci Roadmapa