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

Yifan Cai commented on CASSANDRA-16759:
---------------------------------------

The analysis makes sense. Thanks [~jmeredithco].

In the following scenarios, the STATUS field can be absent onJoin. 
1. {{hasMajorVersion3Nodes()}} that is called in {{Gossiper#applyStateLocally}} 
improperly returns false. It happens when gossiper is just started and there is 
no known peers. [This 
commit|https://github.com/apache/cassandra/commit/195e7d2f9c7a5cbe935f3f7cd38f975f0f48276d]
 fixes it. But the change also brings up a concern that in a single node 
cluster (that runs 4.0), {{hasMajorVersion3Nodes()}} always returns true. 
2. In the tests with more than 2 nodes, it is possible the gossip state is 
received via a third 4.0 node that has removed the STATUS field of its peer 
already. 

So the change to the {{onJoin}} is necessary. Beside correcting the order to 
handle STATUS* first then the others, a node also avoids double handling the 
redundant STATUS* fields received. Instead, it only handles either STATUS or 
STATUS_WITH_PORT.

> Avoid memoizing the wrong min cluster version during upgrades
> -------------------------------------------------------------
>
>                 Key: CASSANDRA-16759
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-16759
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Consistency/Coordination
>            Reporter: Marcus Eriksson
>            Assignee: Marcus Eriksson
>            Priority: Normal
>             Fix For: 4.0-rc2
>
>
> CASSANDRA-16525 avoids trying to calculate the cluster min version if 
> gossiper is not enabled.
> This makes us memoize the wrong version for up to a minute causing us to send 
> 4.0-messages to 3.0 nodes, for example in 
> [ColumnFilter|https://github.com/apache/cassandra/blob/05beda90a9206db165a3997a736ecb06f8dc695e/src/java/org/apache/cassandra/db/filter/ColumnFilter.java#L210]
> This was discovered by python upgrade dtests, 
> [here|https://app.circleci.com/pipelines/github/ekaterinadimitrova2/cassandra/993/workflows/2afef6f0-1356-41f6-93dc-5385ac19dca1/jobs/5977/tests#failed-test-0]
>  after reverting CASSANDRA-15899 in CASSANDRA-16735



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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

Reply via email to