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

Prevent continuous schema exchange between 3.0 and 3.11 nodes

    XMLWordPrintableJSON

Details

    • 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

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

            Dates

              Created:
              Updated:
              Resolved: