Benedict created CASSANDRA-8383:
-----------------------------------

             Summary: Memtable flush may expire records from the commit log 
that are in a later memtable
                 Key: CASSANDRA-8383
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8383
             Project: Cassandra
          Issue Type: Bug
          Components: Core
            Reporter: Benedict
            Assignee: Benedict
            Priority: Critical
             Fix For: 2.1.3


This is a pretty obvious bug with any care of thought, so not sure how I 
managed to introduce it. We use OpOrder to ensure all writes to a memtable have 
finished before flushing, however we also use this OpOrder to direct writes to 
the correct memtable. However this is insufficient, since the OpOrder is only a 
partial order; an operation from the "future" (i.e. for the next memtable) 
could still interleave with the "past" operations in such a way that they grab 
a CL entry inbetween the "past" operations. Since we simply take the max 
ReplayPosition of those in the past, this would mean any interleaved future 
operations would be expired even though they haven't been persisted to disk.




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

Reply via email to