[ 
https://issues.apache.org/jira/browse/CASSANDRA-2419?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13016118#comment-13016118
 ] 

Sylvain Lebresne commented on CASSANDRA-2419:
---------------------------------------------

One solution I see to this problem would be to record along with the replay 
position the time when we last updated this replay position. The during 
recover, we would first look at all the sstables (for the CF) and if a sstable 
is freshly flushed (which implies that we have a marker to know that a sstable 
was never compacted) and have a modification time higher that the last time we 
updated the replay position, then we'll just remove the sstable since we know 
it will be fully replayed.

Note that to work correctly we also need a way to mark a freshly flushed 
sstable as 'non compactable' during the time it takes to mark the commit log.

We would probably only do this for counter CF just to be on the safe side.

Opinions ?

> Risk of counter over-count when recovering commit log
> -----------------------------------------------------
>
>                 Key: CASSANDRA-2419
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2419
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.8
>            Reporter: Sylvain Lebresne
>            Assignee: Sylvain Lebresne
>              Labels: counters
>   Original Estimate: 8h
>  Remaining Estimate: 8h
>
> When a memtable was flush, there is a small delay before the commit log 
> replay position gets updated. If the node fails during this delay, all the 
> updates of this memtable will be replay during commit log recovery and will 
> end-up being over-counts.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to