Details
-
Bug
-
Status: Triage Needed
-
Normal
-
Resolution: Unresolved
-
None
-
None
-
None
-
All
-
None
Description
Compaction purger was written assuming it will be compacting the latest state of the command row, but this is far from the case and it will actually be compacting a random slice of command row columns and their versions based on whatever input sstables are selected for the compaction.
This is not very problematic to fix. A lot of the logic is based on just the value of the field, and the remaining can wait until enough of the command is visible to determine if cleanup is possible cleanup.
Eventually durability is `universal` and we can drop the row contents based on just the `txnid` so there is always a fallback no matter how badly we have torn up the state of a command by dropping portions. We don't want to rely on that so we do drop a tombstone in the `erase` case which we can later drop when durability is `universal` without any expensive tombstone handling checks.