Skip to main content

purge

Function purge 

Source
pub async fn purge(
    root: &Path,
    ancestor_cap: usize,
    namespace: &str,
    collection: &str,
    id: &str,
) -> Result<Revision>
Expand description

Physically remove the tombstone at namespace/collection/id, discarding the restore window it holds.

Refuses anything that is not a tombstone. gonzalo_core::plan_purge does not check the record’s kind: it removes whatever matches the revision, so without this check an operator could physically delete a live record leaving no tombstone, which a peer that had not synced since would resurrect (ADR 0021). Core keeps its contract because collect depends on it; the check belongs here, at the operator surface (ADR 0030).

Benign race: a concurrent collect that purges the same key first makes the plan a no-op, which Store::purge reports as success, so this can print purged: for a tombstone it did not itself remove. That is Store::purge’s documented idempotency.