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

Josh McKenzie commented on CASSANDRA-19948:
-------------------------------------------

> the commitlog can be processed by CDC when the node comes back online.
If. Not when. :) But you allude to that in your response.

Yeah, ultimately if you're 100% certain all clients are reading at quorum and 
writing at quorum, and you _are not_ using CASSANDRA-17666, then yes: you can 
run CDC on a quorum of nodes, and what you see in CDC should always match what 
a client will pull reading at quorum. There will also be a gap between when 
that data becomes available to clients to read and when it gets processed 
downstream by CDC but that's just an extension of the already existing 
processing gap.

That's an *awful lot of caveats* for the average user however; hence my stance 
of "mixed CDC on and off across a cluster was not a pattern considered when 
designing this feature (or any feature that I know of in C* tbh), nor is it one 
we should contort ourselves and do deep surgery across multiple unrelated 
features to support".

> 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
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> 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