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

Blake Eggleston commented on CASSANDRA-6702:
--------------------------------------------

Same problem upgrading from 1.1.x to 2.0.x.

The crux of the issue is here: 
https://github.com/apache/cassandra/blob/cassandra-1.2/src/java/org/apache/cassandra/net/IncomingTcpConnection.java#L129

When an upgraded node connects to a non-upgraded node, that call to 
Gossiper.instance.addSavedNode marks the connecting node as down and forces it 
to reconnect. That's usually not a problem, except when using the 
Ec2MultiRegionSnitch, since the ReconnectableSnitchHelper reconnects 
onJoin/onChange/onAlive, which starts a cycle of reconnection. So this was 
worked around in CASSANDRA-5669 by just skipping the reconnect step if the 
cluster was upgrading here: 
https://github.com/apache/cassandra/blob/cassandra-1.2/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java#L65

However for upgrades from versions >= 1.2 to versions >= 1.2, I think we should 
be able to skip that gossip call, since MS protocol version is no longer 
tracked by gossip as of 1.2. If the call was just making sure we reconnected, 
we should be able to replace it with a call to 
MessagingService.instance.getConnectionPool for the same effect.

With that out of the way, we should be able to remove the version check from 
ReconnectableSnitchHelper. That should probably go behind a -D flag until 3.0 
though, since all hell will break loose if someone using the 
Ec2MultiRegionSnitch upgrades from a release without that fix

> Upgrading node uses the wrong port in gossiping
> -----------------------------------------------
>
>                 Key: CASSANDRA-6702
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6702
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>         Environment: 1.1.7, AWS, Ec2MultiRegionSnitch
>            Reporter: Minh Do
>            Assignee: Brandon Williams
>            Priority: Minor
>             Fix For: 2.0.x
>
>
> When upgrading a node in 1.1.7 (or 1.1.11) cluster to 1.2.15 and inspecting 
> the gossip information on port/Ip, I could see that the upgrading node (1.2 
> version) communicates to one other node in the same region using Public IP 
> and non-encrypted port.
> For the rest, the upgrading node uses the correct ports and IPs to 
> communicate in this manner:
>    Same region: private IP and non-encrypted port 
>    and
>    Different region: public IP and encrypted port
> Because there is one node like this (or 2 out of 12 nodes cluster in which 
> nodes are split equally on 2 AWS regions), we have to modify Security Group 
> to allow the new traffics.
> Without modifying the SG, the 95th and 99th latencies for both reads and 
> writes in the cluster are very bad (due to RPC timeout).  Inspecting closer, 
> that upgraded node (1.2 node) is contributing to all of the high latencies 
> whenever it acts as a coordinator node. 
>  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to