Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-9669

If sstable flushes complete out of order, on restart we can fail to replay necessary commit log records

    XMLWordPrintableJSON

    Details

    • Severity:
      Critical

      Description

      While postFlushExecutor ensures it never expires CL entries out-of-order, on restart we simply take the maximum replay position of any sstable on disk, and ignore anything prior.

      It is quite possible for there to be two flushes triggered for a given table, and for the second to finish first by virtue of containing a much smaller quantity of live data (or perhaps the disk is just under less pressure). If we crash before the first sstable has been written, then on restart the data it would have represented will disappear, since we will not replay the CL records.

      This looks to be a bug present since time immemorial, and also seems pretty serious.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                blambov Branimir Lambov
                Reporter:
                benedict Benedict Elliott Smith
                Authors:
                Branimir Lambov
                Reviewers:
                Benedict Elliott Smith
              • Votes:
                0 Vote for this issue
                Watchers:
                20 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: