Marcus Eriksson commented on CASSANDRA-12778:

Yes, if you keep getting old data in the memtable we can't drop tombstones. We 
can only drop tombstones if we can guarantee that the tombstone we are 
compacting is not covering any older data on the node, so if you have older 
data in the unrepaired sstables we can't drop it.

> Tombstones not being deleted when only_purge_repaired_tombstones is enabled
> ---------------------------------------------------------------------------
>                 Key: CASSANDRA-12778
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-12778
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Arvind Nithrakashyap
>            Assignee: Marcus Eriksson
>            Priority: Critical
> When we use only_purge_repaired_tombstones for compaction, we noticed that 
> tombstones are no longer being deleted.
> {noformat}compaction = {'class': 
> 'org.apache.cassandra.db.compaction.LeveledCompactionStrategy', 
> 'only_purge_repaired_tombstones': 'true'}{noformat}
> The root cause for this seems to be caused by the fact that repair itself 
> issues a flush which in turn leads to a new sstable being created (which is 
> not in the repair set). It looks like we do have some old data in this 
> sstable because of this, only tombstones older than that timestamp are 
> getting deleted even though many more keys have been repaired. 
> Fundamentally it looks like flush and repair can race with each other and 
> with leveled compaction, the flush creates a new sstable at level 0 and 
> removes the older sstable (the one that is picked for repair). Since repair 
> itself seems to issue multiple flushes, the level 0 sstable never gets 
> repaired and hence tombstones never get deleted. 
> We have already included the fix for CASSANDRA-12703 while testing. 

This message was sent by Atlassian JIRA

Reply via email to