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

Prevent continuous schema exchange between 3.0 and 3.11 nodes

    XMLWordPrintableJSON

    Details

    • Severity:
      Critical

      Description

      Continuous schema migrations can happen during an upgrade from 3.0.x to 3.x even with versions having the patches for CASSANDRA-13441 and CASSANDRA-13559.

      The root cause is the cdc column, which is included in schema version calculation in RowIterators.digest() via SchemaKeyspace.calculateSchemaDigest().

      It is possible to make the schema-version calculation between 3.0 and 3.11 compatible. The idea here is: 3.11 accepts both 3.0 compatible and 3.11 "native" schema versions. As long as there is one 3.0 node in the cluster, 3.11 announces a 3.0 compatible schema version (without the cdc column). When there are no (more) 3.0 nodes in the cluster, announce the "real" 3.11 schema version (including the cdc column). "Announce" means announcing via Gossip and storing in system.local.

      The change itself is against 3.11 only. A couple of log messages have been improved and some code regarding schema version checks has been moved into the Schema class. Those "side changes" are carried to trunk. Because of that, the 3.11 and trunk branches are different. The "real" change is in the 3.11 branch.

      NEWS.txt for 3.11(only) contains upgrade notes.

      OSS 3.11 branch
      OSS trunk branch
      OSS dtest branch

      We've verified the functionality of the patch by usual CI tests and extensive tests using the new upgrade dtest.

        Attachments

          Activity

            People

            • Assignee:
              snazy Robert Stupp
              Reporter:
              snazy Robert Stupp
              Authors:
              Robert Stupp
              Reviewers:
              Andres de la Peña
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: