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

Sam Tunnicliffe commented on CASSANDRA-21174:
---------------------------------------------

I agree with [~marcuse], {{Transformation}} implementations can't be affected 
by external state like system properties or node config which could cause 
different outcomes on different nodes. Some previous issues where we have 
encountered similar issues are
* CASSANDRA-20452
* CASSANDRA-20287
* CASSANDRA-20600
The whole paradigm of an immutable metadata log is still new to Cassandra, so 
it's not unexpected that we bump into these issues from time to time. I expect 
that as we get closer to a 6.0 release contributors will naturally become more 
accustomed to working on trunk and this will become more familiar.

Regarding this particular issue, the good news is that stated goal is already 
the implemented behaviour. Should a node running an incompatible version (i.e. 
one where the {{NodeVersion.CURRENT_METADATA_VERSION}} is lower that the 
cluster's minimum common version), it will be prevented from starting up. This 
happens as a natural consequence of fetching the initial cluster metadata state 
from the CMS, which is serialized using the minimum common version. As the new 
node is unaware of this version, it is unable to deserialize it and startup is 
halted. Testing this is a bit tricky as we only currently have an established 
path for testing upgrades where nodes all start on one version and progress to 
a later version. However, it is possible to emulate this behaviour in tests 
without actually having nodes running multiple versions. I've pushed an example 
of this 
[here|https://github.com/beobal/cassandra/commit/69ea018c260126e051782e864a04795a41952a1a]
 for reference. 

All that said, I do think there is still value the extra checks you added the 
two transformations, I just think we should remove the system property and the 
ability to bypass them.      

> Forbid nodes upgrading to a version which cannot read existing log entries
> --------------------------------------------------------------------------
>
>                 Key: CASSANDRA-21174
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-21174
>             Project: Apache Cassandra
>          Issue Type: Improvement
>          Components: Transactional Cluster Metadata
>            Reporter: Aparna Naik
>            Assignee: Aparna Naik
>            Priority: Normal
>             Fix For: 6.x
>
>          Time Spent: 1h
>  Remaining Estimate: 0h
>
> It should not be possible for a node to join a cluster (either via bootstrap 
> or by replacing an existing member), unless the minimum metadata 
> serialization it supports is at least equal to the cluster's 
> minCommonSerializationVersion. This is to prevent nodes being unable to read 
> log entries or metadata snapshots when joining the cluster.



--
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