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

Streaming will miss sections for early opened sstables during compaction

    XMLWordPrintableJSON

Details

    • 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

              marcuse Marcus Eriksson
              spod Stefan Podkowinski
              Marcus Eriksson
              Benedict Elliott Smith
              Votes:
              1 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: