tombstone — tombstone — a marker that records a deletion without performing one
tombstone [--grace SECONDS] [--no-compact] [--hard] KEY delete(k) := write(k, ⊥, version_now)
tombstone records the deletion of a key by writing a marker instead of freeing the storage the key occupied. The bytes remain on disk. Reads learn to step over them. Replicas receive the marker the way they receive any other write, because to this system a deletion is not a removal, it is an insertion with an unusual payload.
The marker carries the newest version and therefore outranks the value it buries. It propagates until every replica agrees the key is dead, at which point it waits out a grace period on the assumption that some node has not yet heard. Only after that, and only if compaction runs, are the bytes reclaimed. The word for a deletion that has not reclaimed anything is: normal.
The alternative — erasing the value outright — is worse. A replica that never received the delete sees an empty slot, mistakes it for the oldest version of all, and helpfully copies its own live value back. The record walks again. The tombstone exists so the absence has a version number and can win an argument.
The deletion-marker sense is native to replicated and log-structured data stores. Apache Cassandra names them tombstones and clears them during compaction only after gc_grace_seconds, historically 864000 (ten days), a window that also throttles read performance while it lasts. Microsoft Active Directory kept deleted objects as tombstone entries governed by a tombstoneLifetime, 60 days by default and later 180. Conflict-free replicated data types such as the OR-Set retain tombstones deliberately, so that a concurrent add elsewhere cannot silently revive a removed element.
--forget returns 0 while the value persists across three backups, two replicas, and a marker whose grace period has not elapsed. The right to erasure has been filed here since GDPR took effect.
Under sustained deletes, tombstones outnumber live rows and every read walks the graveyard before finding anything. Reported as slow. Closed as working to specification.
A marker compacted on one node and pending on another yields a record that is simultaneously deleted and present, depending on which replica answers. See heisenbug.
idempotent(3), bitrot(5), heisenbug(1). The living exhibit demonstrates the word in motion:
▸ operate tombstone