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

ReplicaLayout follow-up

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Normal
    • Resolution: Fixed
    • None
    • None
    • None

    Description

      Clarify the new ReplicaLayout code, separating it into ReplicaPlan (for what we want to do) and ReplicaLayout (for what we know about the cluster), with well defined semantics (and comments in the rare cases those semantics are weird)

      Found and fixed some bugs:

      • commitPaxos was using only live nodes, when needed to include down
      • We were not writing to pending transient replicas
      • On write, we were not hinting to full nodes with transient replication enabled (since we filtered to liveOnly, in order to include our transient replicas above blockFor)
      • If we speculated, in maybeSendAdditionalReads (in read repair) we would only consult the same node we had speculated too. This also applied to maybeSendAdditionalWrites - and this issue was also true pre-TR.
      • Transient->Full movements mishandled consistency level upgrade
        • While we need to treat a transitioning node as ‘full’ for writes, so that it can safely begin serving full data requests once it has finished, we cannot maintain it in the ‘pending’ collection else we will also increase our consistency requirements by a node that doesn’t exist.

      Attachments

        Issue Links

          Activity

            People

              benedict Benedict Elliott Smith
              benedict Benedict Elliott Smith
              Benedict Elliott Smith
              Alex Petrov, Ariel Weisberg
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: