[ 
https://issues.apache.org/jira/browse/CASSANDRA-4671?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vijay updated CASSANDRA-4671:
-----------------------------

    Attachment: 0001-CASSANDRA-4671.patch

Added Min timestamp and the changes to shouldPurge

{code}
    public boolean shouldPurge(DecoratedKey key, long maxDeletionTimestamp)
    {
        List<SSTableReader> filteredSSTables = overlappingTree.search(key);
        for (SSTableReader sstable : filteredSSTables)
        {
            if (sstable.getBloomFilter().isPresent(key.key) && 
sstable.getMinTimestamp() >= maxDeletionTimestamp)
                return false;
        }
        return true;
    }
{code}

Added a test case to CompactionsPurgeTest which works as expected.
                
> Improve removal of gcable tomstones during minor compaction
> -----------------------------------------------------------
>
>                 Key: CASSANDRA-4671
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4671
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Sylvain Lebresne
>            Priority: Minor
>             Fix For: 1.2.1
>
>         Attachments: 0001-CASSANDRA-4671.patch
>
>
> When we minor compact, we only purge a row if we know it's not present in any 
> of the sstables that are not in the compaction set.
> It is however possible to have scenario where this leads us to keep 
> irrelevant tombstone for longer than necessary (and I suspect LCS make those 
> scenario a little bit more likely).
> We could however purge tombstone if we know that the non-compacted sstables 
> doesn't have any info that is older than the tombstones we're about to purge 
> (since then we know that the tombstones we'll consider can't delete data in 
> non compacted sstables). 
> In other words, we should force CompactionController.shouldPurge() to return 
> true if min_timestamp(non-compacted-overlapping-sstables) > 
> max_timestamp(compacted-sstables).
> This does require us to record the min timestamp of an sstable first though 
> (we only record the max timestamp so far).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to