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

DESC order reads can fail to return the last Unfiltered in the partition in a legacy sstable

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Urgent
    • Resolution: Fixed
    • Fix Version/s: 3.0.18, 3.11.4
    • Component/s: Local/SSTable
    • Labels:
      None
    • Bug Category:
      Correctness - Transient Incorrect Response
    • Severity:
      Critical
    • Complexity:
      Challenging
    • Discovered By:
      Fuzz Test
    • Since Version:

      Description

      OldFormatDeserializer’s hasNext() method can and will consume two Unfiltered from the underlying iterator in some scenarios - intentionally.

      But in doing that it’s losing intermediate state of lastConsumedPosition. If that last block, when iterating backwards, only has two Unfiltered, the first one will be returned, and the last one won’t as the reverse iterator would incorrectly things that the deserisalizer is past the index block, despite still having one Unfiltered unreturned.

        Attachments

          Activity

            People

            • Assignee:
              aleksey Aleksey Yeschenko
              Reporter:
              aleksey Aleksey Yeschenko
              Authors:
              Aleksey Yeschenko
              Reviewers:
              Benedict Elliott Smith, Sam Tunnicliffe
            • Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: