You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jeff Jirsa (JIRA)" <ji...@apache.org> on 2017/03/01 05:02:45 UTC

[jira] [Created] (CASSANDRA-13282) Commitlog replay may fail if last mutation is within 4 bytes of end of segment

Jeff Jirsa created CASSANDRA-13282:
--------------------------------------

             Summary: Commitlog replay may fail if last mutation is within 4 bytes of end of segment
                 Key: CASSANDRA-13282
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13282
             Project: Cassandra
          Issue Type: Bug
            Reporter: Jeff Jirsa
            Assignee: Jeff Jirsa
             Fix For: 3.0.x, 3.11.x, 4.x


Following CASSANDRA-9749 , stricter correctness checks on commitlog replay can incorrectly detect "corrupt segments" and stop commitlog replay (and potentially stop cassandra, depending on the configured policy). In {{CommitlogReplayer#replaySyncSection}} we try to read a 4 byte int {{serializedSize}}, and if it's 0 (which will happen due to zeroing when the segment was created), we continue on to the next segment. However, it appears that if a mutation is sized such that it ends with 1, 2, or 3 bytes remaining in the segment, we'll hit pass the {{isEOF}} on the while loop but fail to read the {{serializedSize}} int, and fail. 



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)