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

Prevent continuous schema exchange between 3.0 and 3.11 nodes

Agile BoardAttach filesAttach ScreenshotBulk Copy AttachmentsBulk Move AttachmentsVotersWatch issueWatchersCreate sub-taskMoveLinkCloneLabelsUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments


    • Critical


      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.



          This comment will be Viewable by All Users Viewable by All Users


            snazy Robert Stupp Assign to me
            snazy Robert Stupp
            Robert Stupp
            Andres de la Peña
            0 Vote for this issue
            5 Start watching this issue




                Issue deployment