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

Stefan Miklosovic edited comment on CASSANDRA-20118 at 12/2/24 1:28 PM:
------------------------------------------------------------------------

I don't see any easy way around this. We might have a guardrail in 4.1+ saying 
that even schema on just-upgraded node does not match, we don't care and we are 
OK to proceed. We might also check what version that node the hints are for is 
on and if it is 5.0 and we are on 4.1 we might proceed but at the same time we 
would need to also cover the legitimate situation when schema diverges while 
upgrade is occurring.

This second case should not be hit under normal conditions. I think that it 
would be welcome if operators had a mean how to forbid any schema changes 
during upgrades. We plan to include CASSANDRA-19828 by which an operator might 
forbid any user facing schema changes so the only possible reason schema 
diverges in 5.0+ would be if these changes come from system tables etc and I 
don't think we save hints for these, do we? So in that regard the override and 
continue would be just fine.

EDIT: Actually I am not completely sure it is so simple like that, for example, 
if we introduce a new table property into CQL (all these properties on 
specified with WITH clause), that itself would change the schema version while 
schema of a table as such (columns etc) would stay intact. 


was (Author: smiklosovic):
I don't see any easy way around this. We might have a guardrail in 4.1+ saying 
that even schema on just-upgraded node does not match, we don't care and we are 
OK to proceed. We might also check what version that node the hints are for is 
on and if it is 5.0 and we are on 4.1 we might proceed but at the same time we 
would need to also cover the legitimate situation when schema diverges while 
upgrade is occurring.

This second case should not be hit under normal conditions. I think that it 
would be welcome if operators had a mean how to forbid any schema changes 
during upgrades. We plan to include CASSANDRA-19828 by which an operator might 
forbid any user facing schema changes so the only possible reason schema 
diverges in 5.0+ would be if these changes come from system tables etc and I 
don't think we save hints for these, do we? So in that regard the override and 
continue would be just fine.

EDIT: Actually I am not completely sure it is so simple like that, for example, 
if we introduce a new table property into CQL, that itself would change the 
schema version while schema of a table as such (columns etc) would stay intact. 

> Hints ignored during Upgrade from C*4 to C*5
> --------------------------------------------
>
>                 Key: CASSANDRA-20118
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-20118
>             Project: Apache Cassandra
>          Issue Type: Bug
>          Components: Consistency/Hints
>            Reporter: Paul Chandler
>            Priority: Normal
>
> I have discovered that some hints were not being processed after nodes come 
> back up when a cluster in in a mixed mode with some cassandra 4 nodes and 
> some cassdandra 5 nodes ( these with a storage compatibility mode CASSANDRA_4 
> )
>  
> When in this mode there is a schema mismatch after the first node has been 
> upgraded, which continues until the last node has been upgraded.
> It seems that the hints are blocked from being sent if there is a schema 
> mismatch between the 2 nodes, that can be seen at this line. 
> [cassandra/src/java/org/apache/cassandra/hints/HintsDispatchTrigger.java at 
> cassandra-5.0 · 
> apache/cassandra|https://github.com/apache/cassandra/blob/cassandra-5.0/src/java/org/apache/cassandra/hints/HintsDispatchTrigger.java#L65]
> I have tested removing this line, and that then does allow the hint to be 
> transferred normally. However I am not sure of the implications for doing 
> that if the hint is for part of the schema where the actual mismatch occurs.
>  
> This creates the problem when a node is being upgraded and is currently down, 
> hint files will be created for it on the new cassandra 5 nodes and the old 
> cassandra 4 nodes, but the hint files on the old cassandra 4 nodes will not 
> be processed, due to the schema mismatch. Leading to potential data loss. 



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to