You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Benedict (JIRA)" <ji...@apache.org> on 2014/12/17 13:29:13 UTC

[jira] [Updated] (CASSANDRA-8496) Remove MemtablePostFlusher

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

Benedict updated CASSANDRA-8496:
--------------------------------
    Description: 
To improve clearing of the CL, prevent infinite growth, and ensure the prompt completion of tasks waiting on flush in the case of transient errors, large flushes or slow disks, in 2.1 we could eliminate the post flusher altogether. 

Since we now enforce that Memtables track contiguous ranges, a relatively small change would permit Memtables to know the exact minimum as well as the currently known exact maximum. The CL could easily track the total dirty range, knowing that it must be contiguous, by using an AtomicLong instead of an AtomicInteger, and tracking both the min/max seen, not just the max. The only slight complexity will come in for tracking the _clean_ range as this can now be non-contiguous, if there are 3 memtable flushes covering the same CL segment, and one of them completes later. To solve this we can use an interval tree since these operations are infrequent, so the extra overhead is nominal. Once the interval tree completely overlaps the dirty range, we mark the entire dirty range clean.


  was:
To improve clearing of the CL and the prompt completion of tasks waiting on flush in the case of transient errors, large flushes or slow disks, in 2.1 we could eliminate the post flusher altogether. 

Since we now enforce that Memtables track contiguous ranges, a relatively small change would permit Memtables to know the exact minimum as well as the currently known exact maximum. The CL could easily track the total dirty range, knowing that it must be contiguous, by using an AtomicLong instead of an AtomicInteger, and tracking both the min/max seen, not just the max. The only slight complexity will come in for tracking the _clean_ range as this can now be non-contiguous, if there are 3 memtable flushes covering the same CL segment, and one of them completes later. To solve this we can use an interval tree since these operations are infrequent, so the extra overhead is nominal. Once the interval tree completely overlaps the dirty range, we mark the entire dirty range clean.



> Remove MemtablePostFlusher
> --------------------------
>
>                 Key: CASSANDRA-8496
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8496
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Benedict
>            Priority: Minor
>
> To improve clearing of the CL, prevent infinite growth, and ensure the prompt completion of tasks waiting on flush in the case of transient errors, large flushes or slow disks, in 2.1 we could eliminate the post flusher altogether. 
> Since we now enforce that Memtables track contiguous ranges, a relatively small change would permit Memtables to know the exact minimum as well as the currently known exact maximum. The CL could easily track the total dirty range, knowing that it must be contiguous, by using an AtomicLong instead of an AtomicInteger, and tracking both the min/max seen, not just the max. The only slight complexity will come in for tracking the _clean_ range as this can now be non-contiguous, if there are 3 memtable flushes covering the same CL segment, and one of them completes later. To solve this we can use an interval tree since these operations are infrequent, so the extra overhead is nominal. Once the interval tree completely overlaps the dirty range, we mark the entire dirty range clean.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)