[ 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