[ https://issues.apache.org/jira/browse/CASSANDRA-8496?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15304157#comment-15304157 ]
T Jake Luciani commented on CASSANDRA-8496: ------------------------------------------- Regarding #6 this is something we have seen before when working on MV code CASSANDRA-10231. I think our existing "fix" is to force blocking flush for any node metadata change which is pretty easy to miss. I think we should consider one of 2 things) 1. Playing system table mutations first (which would require 2 passes) 2. Keep a simple commit log for only system tables which we would order via a single thread. and replay first on startup. I guess you could get into the reverse problem here though. A commit log contains old table format changes but the new table metadata has already been applied. > Remove MemtablePostFlusher > -------------------------- > > Key: CASSANDRA-8496 > URL: https://issues.apache.org/jira/browse/CASSANDRA-8496 > Project: Cassandra > Issue Type: Improvement > Reporter: Benedict > Assignee: Branimir Lambov > 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)