Thanks for looking into this.

Jira ticket CASSANDRA-19948 <https://issues.apache.org/jira/browse/CASSANDRA-19948> has been created for this.


On 23/09/2024 16:59, Josh McKenzie wrote:
Yeah; think that would need to live in `AlterTableStatement.java` in probably `#AlterOptions`. There's guardrail validation in there for gc_grace, mv's, replication strategies, and compression on 4.1 but I'm not seeing any guardrail for CDC.

Could you open a JIRA for that Bowen? Might even be other params that we can enable/disable on the node level we're not checking in the guardrails on alter; CDC predated guardrails so this might be an isolated oversight but /shrug.

On Mon, Sep 23, 2024, at 11:06 AM, Josh McKenzie wrote:
I wouldn't be surprised if we don't have logic in place to handle that disjoint (DDL for disabled .yaml property) at least in the case of CDC. It's been the better part of a decade since that first impl but I don't have any recollection of that logic being in there.

Let me take a quick look at the code and I'll get back to you; might need a JIRA.

On Fri, Sep 20, 2024, at 11:50 AM, Štefan Miklošovič wrote:
Thank you for reporting this. I may check next week more closely and let you know.

On Fri, Sep 20, 2024 at 5:43 PM Bowen Song via user <user@cassandra.apache.org> wrote:

    Hi all,

    I suspect that I've ran into a bug (or two).

    On Cassandra 4.1.1, when `cdc_enabled` in the cassandra.yaml
    file is set
    to `false` on at least one node in the cluster, and then the `ALTER
    TABLE ... WITH cdc=...` statement was run against that node, the
    cluster
    will end up in the schema disagreement state. At this stage, 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 same procedure doesn't cause 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.

    A shell script for reproducing the above described behaviours,
    and the
    output on both 4.1.1 and 4.1.6 are attached.

    (as a good security practice, please always read and understand
    the full
    script you downloaded from untrusted sources before attempting
    to run it)

    So, are these bugs? Or is this some kind of behaviour that's
    documented
    but I failed to find that documentation for?

    Cheers,
    Bowen


Reply via email to