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

Streaming will miss sections for early opened sstables during compaction

    Details

    • Severity:
      Critical

      Description

      Once validation compaction has been finished, all mismatching sstable sections for a token range will be used for streaming as return by StreamSession.getSSTableSectionsForRanges. Currently 2.1 will try to restrict the sstable candidates by checking if they can be found in CANONICAL_SSTABLES and will ignore them otherwise. At the same time IntervalTree in the DataTracker will be build based on replaced non-canonical sstables as well. In case of early opened sstables this becomes a problem, as the tree will be update with OpenReason.EARLY replacements that cannot be found in canonical. But whenever getSSTableSectionsForRanges will get a early instance from the view, it will fail to retrieve the corresponding canonical version from the map, as the different generation will cause a hashcode mismatch. Please find a test attached.

      As a consequence not all sections for a range are streamed. In our case this has caused deleted data to reappear, as sections holding tombstones were left out due to this behavior.

        Attachments

        1. 9700-test-2_1.patch
          5 kB
          Stefan Podkowinski

          Issue Links

            Activity

              People

              • Assignee:
                krummas Marcus Eriksson
                Reporter:
                spodxx@gmail.com Stefan Podkowinski
                Authors:
                Marcus Eriksson
                Reviewers:
                Benedict
              • Votes:
                1 Vote for this issue
                Watchers:
                9 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: