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

Assertion in SSTableReader during repair.

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Normal
    • Resolution: Fixed
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Severity:
      Normal

      Description

      I ran a git bisect run using the attached bisect script. Repro code:

      # 5dfe241: trunk as of my git bisect run
      # 345772d: empirically determined "good" commit.
      git bisect start 5dfe241 345772d
      git bisect run ./sstablereader-assertion-bisect-helper-v2
      

      The first failing commit is 5ebadc1 (first parent of refs/bisect/bad).

      Prior to 5ebadc1, SSTableReader#close() never checked reference count. After 5ebadc1, there was an assertion for references.get() == 0. However, since the reference count is initialized to 1, a SSTableReader#close() was always guaranteed to either throw an AssertionError or to be a second call to SSTableReader#tidy() on the same SSTableReader.

      The attached patch chooses an in-between behavior. It requires the reference count to match the initialization value of 1 for SSTableReader#close(), and the same behavior as 5ebadc1 otherwise.

      This allows repair to finish successfully, but I'm not 100% certain what the desired behavior is for SSTableReader#close(). Should it close without regard to reference count, as it did pre-5ebadc1?

      Edit: accidentally uploaded a flawed version of sstablereader-assertion-bisect-helper (doesn't work out-of-the-box with git bisect).

        Attachments

        1. 7000.supplement.txt
          2 kB
          Benedict Elliott Smith
        2. 7000-2.1-v2.txt
          2 kB
          Yuki Morishita
        3. sstablereader-assertion.patch
          2 kB
          Ben Chan
        4. sstablereader-assertion-bisect-helper
          2 kB
          Ben Chan
        5. sstablereader-assertion-bisect-helper-v2
          2 kB
          Ben Chan

          Issue Links

            Activity

              People

              • Assignee:
                usrbincc Ben Chan
                Reporter:
                usrbincc Ben Chan
                Authors:
                Ben Chan
                Reviewers:
                Yuki Morishita
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: