[ 
https://issues.apache.org/jira/browse/CASSANDRA-19948?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17884581#comment-17884581
 ] 

Bowen Song commented on CASSANDRA-19948:
----------------------------------------

[~smiklosovic] if that was indeed the cause, how confidence are we that 
[these|https://github.com/apache/cassandra/blob/720a1b2704f97d20300cc743b4223557e2c0c12c/src/java/org/apache/cassandra/schema/SchemaKeyspace.java#L562C1-L580C55]
 on trunk won't cause schema divergence between the nodes? I believe that they 
affect more than just 4.x, and are need for the 4.x to 5.x upgrade.

 
{code:java}
        // As above, only add the memtable column if the table uses a 
non-default memtable configuration to avoid RTE
        // in mixed operation with pre-4.1 versioned node during upgrades.
        if (params.memtable != MemtableParams.DEFAULT)
            builder.add("memtable", params.memtable.configurationKey());

        // As above, only add the allow_auto_snapshot column if the value is 
not default (true) and
        // auto-snapshotting is enabled, to avoid RTE in pre-4.2 versioned node 
during upgrades
        if (!params.allowAutoSnapshot)
            builder.add("allow_auto_snapshot", false);

        // As above, only add the incremental_backups column if the value is 
not default (true) and
        // incremental_backups is enabled, to avoid RTE in pre-4.2 versioned 
node during upgrades
        if (!params.incrementalBackups)
            builder.add("incremental_backups", false);{code}
 

 

> Changing cdc table property can cause schema disagreement
> ---------------------------------------------------------
>
>                 Key: CASSANDRA-19948
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-19948
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Cluster/Schema
>            Reporter: Bowen Song
>            Priority: Normal
>             Fix For: 4.1.x, 5.0.x, 5.x
>
>         Attachments: 4.1.1.txt, 4.1.6.txt, 5.0.0-corrected.txt, 
> cdc_schema_disagreement.sh
>
>
> In the cassandra.yaml file, there is a parameter named "cdc_enabled" which 
> allows CDC to be enabled or disabled on each individual nodes.
> It has been found that it can cause schema disagreement or discrepancy when 
> an "ALTER TABLE ... WITH cdc=..." statement is ran against a node which has 
> "cdc_enabled" set to "false" in a cluster in which nodes have mixed 
> "true"/"false" values for the "cdc_enabled" settings.
> The exact behaviour of the above is version-dependant.
> On Cassandra 4.1.1, the cluster will end up in the schema disagreement state. 
> A rolling restart will bring the schema back in sync, but the changes made to 
> the `cdc` table property will be lost. 
> On Cassandra 4.1.6, the cluster will not have visible schema disagreement in 
> the "nodetool describecluster" command's output, but the "ALTER TABLE" 
> statement only has cosmetic effect on the node it is run. The node with 
> "cdc_enabled" set to "false" will show the "cdc" table property has changed, 
> but this does not affect its behaviour in any way. At the same time, other 
> nodes do not see that table property change at all. This is perhaps even 
> worse than on 4.1.1, because the alter table statement is silently failing. 
> On Casandra 5.0.0, the behaviour is the same as 4.1.6.
> A shell script for reproducing the above described behaviours in Docker, and 
> the outputs of it on both 4.1.1 and 4.1.6 and 5.0.0 are attached.
>  
> Edit on 25 Sep: added test result on 5.0.0



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to