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

Jonathan Ellis edited comment on CASSANDRA-2419 at 4/5/11 10:32 PM:
--------------------------------------------------------------------

I don't understand the problem.  Say we have this situation:

CommitLog-1302036825548.log: [full of writes to CF Foo counters, up to position 
100.  header reads dirty-at 50, our last flush position]
Foo-g-45-Metadata.db: [flushed at position (1302036825548, 50)]
Foo-g-46-Metadata.db: [flushed at position (1302036825548, 100)]

We compact and get
Foo-g-47-Metadata.db: [flushed at position (1302036825548, 100)]

If we die and restart here we will correctly start reply of Foo at position 100 
in this segment.

(we can combine to a single flushed-at entry in this case since they were from 
the same CL segment.  if they were from different segments we would keep both.)

      was (Author: jbellis):
    I don't understand the problem.  Say we have this situation:

CommitLog-1302036825548.log: [full of writes to CF Foo counters, up to position 
100.  header reads dirty-at 50, our last flush position]
Foo-g-45-Metadata.db: [flushed at position (1302036825548, 50)]
Foo-g-46-Metadata.db: [flushed at position (1302036825548, 100)]

We compact and get
Foo-g-46-Metadata.db: [flushed at position (1302036825548, 100)]

If we die and restart here we will correctly start reply of Foo at position 100 
in this segment.

(we can combine to a single flushed-at entry in this case since they were from 
the same CL segment.  if they were from different segments we would keep both.)
  
> 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