Skip to content

fix(history): prune checkpoints for removed stages - #51

Closed
albertovincenzi wants to merge 1 commit into
fix/align-history-minute-bucketsfrom
fix/prune-rollup-checkpoints
Closed

fix(history): prune checkpoints for removed stages#51
albertovincenzi wants to merge 1 commit into
fix/align-history-minute-bucketsfrom
fix/prune-rollup-checkpoints

Conversation

@albertovincenzi

Copy link
Copy Markdown
Collaborator

Dipendenze

Questa PR è impilata su #20, che a sua volta dipende da #13. Il diff aggiuntivo riguarda soltanto il ciclo dei checkpoint; va valutato dopo l'allineamento dei bucket e la persistenza atomica della baseline.

Problema

La mappa last conserva la baseline dei contatori lifetime per ogni identità grafo/path/stage. Quando un grafo viene eliminato, disabilita i counters o una redeclare rimuove uno stage, nessuno eliminava la relativa entry:

  • la memoria cresceva per tutta la vita del processo con il churn delle dichiarazioni;
  • se la stessa identità ricompariva più tardi, poteva ereditare una baseline appartenente a un runtime non più esistente (il reset viene normalmente riconosciuto dai contatori più bassi, ma non quando i nuovi valori hanno già superato quelli vecchi prima del flush).

Fix

  • raccoglie le chiavi attive nello stesso snapshot del registry usato dal flush;
  • dopo il passaggio, mantiene in last soltanto quelle chiavi;
  • conserva comunque la baseline precedente quando una scrittura fallisce, perché lo stage è ancora nella collezione active;
  • aggiunge un test che dimostra la rimozione selettiva senza toccare un checkpoint vivo.

Test

  • cargo test --workspace;
  • cargo clippy -p gate-server --all-targets -- -D warnings;
  • cargo fmt --all -- --check;
  • git diff --check.

Per Alice

L'ordine è #13#20 → questa PR. La proprietà importante da controllare è il ramo di errore: un fallimento PostgreSQL non fa avanzare né eliminare il checkpoint di uno stage ancora attivo, quindi il delta verrà ritentato nel minuto successivo come previsto da #13.

@alice-viola

Copy link
Copy Markdown
Contributor

Landed on master via #67 (merge commit 944ee9b) as part of the 62-PR integration — this PR's head commit ee7bc3a is an ancestor of master. GitHub could not mark it merged automatically because its base is fix/align-history-minute-buckets, not master. Closing as landed.

@alice-viola alice-viola closed this Sep 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants