[
https://issues.apache.org/jira/browse/CASSANDRA-8383?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14227622#comment-14227622
]
Benedict commented on CASSANDRA-8383:
-------------------------------------
Initial patch
[here|https://github.com/belliottsmith/cassandra/tree/8383-bug-clexpirereorder]
We should also introduce a commit log correctness stress test, so we can
reproduce this, be certain it is fixed, and so we can be sure to avoid this or
similar scenarios in future.
> 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
> Labels: commitlog
> 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)