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

Handle repeat open bound from SRP in read repair

    XMLWordPrintableJSON

Details

    • Correctness - Transient Incorrect Response
    • Normal

    Description

      If there is an open range tombstone in an iterator, a short read protection request for it will include a repeat open bound. Currently, DataResolver doesn't expect this, and will raise an assertion, timing out the request:

      java.lang.AssertionError: Error merging RTs on test.test: merged=null, versions=[Marker EXCL_START_BOUND(0)@0, null], sources={[/127.0.0.1, /127.0.0.2]}, responses:
          /127.0.0.1 => [test.test] key=0 partition_deletion=deletedAt=-9223372036854775808, localDeletion=2147483647 columns=[[] | []]
             Row[info=[ts=1] ]: ck=0 | ,
         /127.0.0.2 => [test.test] key=0 partition_deletion=deletedAt=-9223372036854775808, localDeletion=2147483647 columns=[[] | []]
             Row[info=[ts=-9223372036854775808] del=deletedAt=1, localDeletion=1521572669 ]: ck=0 |
             Row[info=[ts=1] ]: ck=1 | 
      

      As this is a completely normal/common scenario, we should allow for this, and relax the assertion.

      Additionally, the linked branch makes the re-throwing AssertionError more detailed and more correct: the responses are now printed out in the correct order, respecting isReversed, the command causing the assertion is now logged, as is isReversed itself, and local deletion times for RTs.

      Attachments

        Activity

          People

            aleksey Aleksey Yeschenko
            aleksey Aleksey Yeschenko
            Aleksey Yeschenko
            Sylvain Lebresne
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: