You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Aleksey Yeschenko (Jira)" <ji...@apache.org> on 2022/01/24 15:35:00 UTC

[jira] [Commented] (CASSANDRA-16878) Race in commit log replay can cause rejected mutations

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

Aleksey Yeschenko commented on CASSANDRA-16878:
-----------------------------------------------

It's very possible that I'm missing something, but it feels to me like this only covers one side of the process. There are no ordering guarantees for writing schema/data mutations to the commit log in the first place, so you could easily write a data mutation first, and only then the schema one that would make that mutation parseable in the first place. Then enforce that incorrect order on replay with this patch. Again, could be missing something here, these are just some thoughts off the top of my head.

> Race in commit log replay can cause rejected mutations
> ------------------------------------------------------
>
>                 Key: CASSANDRA-16878
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-16878
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Legacy/Local Write-Read Paths
>            Reporter: Andres de la Peña
>            Assignee: Andres de la Peña
>            Priority: Normal
>             Fix For: 3.0.x, 3.11.x, 4.0.x, 4.x
>
>          Time Spent: 1h 50m
>  Remaining Estimate: 0h
>
> We don't force order in the execution of replayed mutations and hence a mutation can move ahead of or behind a schema change it relies on (e.g. added/removed column), which can then cause it to be rejected because of a schema mismatch.
> To fix this, we need to identify schema mutations and make sure the log enforces their execution after all previous mutations have completed and before anything following is started.
> Schema mutations are [flushed|https://github.com/apache/cassandra/blob/cassandra-4.0.0/src/java/org/apache/cassandra/schema/SchemaKeyspace.java#L1266-L1271] after being applied, so this only would be a problem if the node abruptly stops before flushing the schema mutation.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

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