gc-preserves-active-snapshots

Status: IN

Garbage collection removes only versions unreachable by any active transaction, ensuring long-running read-only transactions see consistent data

Source: entries/2026/05/29/topic-mvcc-snapshot-isolation.md

Example

def garbage_collect(self):
    min_active = min(tx.tx_id for tx in self._transactions.values() if tx.is_active)
    # only remove versions invisible to all active transactions

JSON