You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2015/05/12 17:57:04 UTC

[1/6] cassandra git commit: Fix ReconnectableSnitch reconnecting to peers during upgrade

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.0 15235ee63 -> a7cae3255
  refs/heads/cassandra-2.1 ed0026fed -> 2e7b0884a
  refs/heads/trunk fa4a020ac -> 5ff69f2c9


Fix ReconnectableSnitch reconnecting to peers during upgrade


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a7cae325
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a7cae325
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a7cae325

Branch: refs/heads/cassandra-2.0
Commit: a7cae3255cc7a8014804c7642eaefc6f35099a3e
Parents: 15235ee
Author: Blake Eggleston <bd...@gmail.com>
Authored: Tue May 12 10:55:43 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue May 12 10:56:04 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                           |  1 +
 .../cassandra/locator/ReconnectableSnitchHelper.java  |  1 -
 .../apache/cassandra/net/IncomingTcpConnection.java   | 14 ++++----------
 3 files changed, 5 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a7cae325/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index d3715c4..685b945 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.0.15:
+ * Fix ReconnectableSnitch reconnecting to peers during upgrade (CASSANDRA-6702)
  * Include keyspace and table name in error log for collections over the size
    limit (CASSANDRA-9286)
  * Avoid potential overlap in LCS with single-partition sstables (CASSANDRA-9322)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a7cae325/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java b/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
index e5dbdeb..3277af7 100644
--- a/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
+++ b/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
@@ -60,7 +60,6 @@ public class ReconnectableSnitchHelper implements IEndpointStateChangeSubscriber
     private void reconnect(InetAddress publicAddress, InetAddress localAddress)
     {
         if (snitch.getDatacenter(publicAddress).equals(localDc)
-                && MessagingService.instance().getVersion(publicAddress) == MessagingService.current_version
                 && !MessagingService.instance().getConnectionPool(publicAddress).endPoint().equals(localAddress))
         {
             MessagingService.instance().getConnectionPool(publicAddress).reset(localAddress);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a7cae325/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/IncomingTcpConnection.java b/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
index b61e82e..4817c75 100644
--- a/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
+++ b/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
@@ -119,11 +119,14 @@ public class IncomingTcpConnection extends Thread implements Closeable
     {
         // handshake (true) endpoint versions
         DataOutputStream out = new DataOutputStream(socket.getOutputStream());
+        // if this version is < the MS version the other node is trying
+        // to connect with, the other node will disconnect
         out.writeInt(MessagingService.current_version);
         out.flush();
         DataInputStream in = new DataInputStream(socket.getInputStream());
         int maxVersion = in.readInt();
-
+        // outbound side will reconnect if necessary to upgrade version
+        assert version <= MessagingService.current_version;
         from = CompactEndpointSerializationHelper.deserialize(in);
         // record the (true) version of the endpoint
         MessagingService.instance().setVersion(from, maxVersion);
@@ -139,15 +142,6 @@ public class IncomingTcpConnection extends Thread implements Closeable
             in = new DataInputStream(new BufferedInputStream(socket.getInputStream(), 4096));
         }
 
-        if (version > MessagingService.current_version)
-        {
-            // save the endpoint so gossip will reconnect to it
-            Gossiper.instance.addSavedEndpoint(from);
-            logger.info("Received messages from newer protocol version {}. Ignoring", version);
-            return;
-        }
-        // outbound side will reconnect if necessary to upgrade version
-
         while (true)
         {
             MessagingService.validateMagic(in.readInt());


[2/6] cassandra git commit: Fix ReconnectableSnitch reconnecting to peers during upgrade

Posted by jb...@apache.org.
Fix ReconnectableSnitch reconnecting to peers during upgrade


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a7cae325
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a7cae325
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a7cae325

Branch: refs/heads/cassandra-2.1
Commit: a7cae3255cc7a8014804c7642eaefc6f35099a3e
Parents: 15235ee
Author: Blake Eggleston <bd...@gmail.com>
Authored: Tue May 12 10:55:43 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue May 12 10:56:04 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                           |  1 +
 .../cassandra/locator/ReconnectableSnitchHelper.java  |  1 -
 .../apache/cassandra/net/IncomingTcpConnection.java   | 14 ++++----------
 3 files changed, 5 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a7cae325/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index d3715c4..685b945 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.0.15:
+ * Fix ReconnectableSnitch reconnecting to peers during upgrade (CASSANDRA-6702)
  * Include keyspace and table name in error log for collections over the size
    limit (CASSANDRA-9286)
  * Avoid potential overlap in LCS with single-partition sstables (CASSANDRA-9322)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a7cae325/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java b/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
index e5dbdeb..3277af7 100644
--- a/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
+++ b/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
@@ -60,7 +60,6 @@ public class ReconnectableSnitchHelper implements IEndpointStateChangeSubscriber
     private void reconnect(InetAddress publicAddress, InetAddress localAddress)
     {
         if (snitch.getDatacenter(publicAddress).equals(localDc)
-                && MessagingService.instance().getVersion(publicAddress) == MessagingService.current_version
                 && !MessagingService.instance().getConnectionPool(publicAddress).endPoint().equals(localAddress))
         {
             MessagingService.instance().getConnectionPool(publicAddress).reset(localAddress);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a7cae325/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/IncomingTcpConnection.java b/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
index b61e82e..4817c75 100644
--- a/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
+++ b/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
@@ -119,11 +119,14 @@ public class IncomingTcpConnection extends Thread implements Closeable
     {
         // handshake (true) endpoint versions
         DataOutputStream out = new DataOutputStream(socket.getOutputStream());
+        // if this version is < the MS version the other node is trying
+        // to connect with, the other node will disconnect
         out.writeInt(MessagingService.current_version);
         out.flush();
         DataInputStream in = new DataInputStream(socket.getInputStream());
         int maxVersion = in.readInt();
-
+        // outbound side will reconnect if necessary to upgrade version
+        assert version <= MessagingService.current_version;
         from = CompactEndpointSerializationHelper.deserialize(in);
         // record the (true) version of the endpoint
         MessagingService.instance().setVersion(from, maxVersion);
@@ -139,15 +142,6 @@ public class IncomingTcpConnection extends Thread implements Closeable
             in = new DataInputStream(new BufferedInputStream(socket.getInputStream(), 4096));
         }
 
-        if (version > MessagingService.current_version)
-        {
-            // save the endpoint so gossip will reconnect to it
-            Gossiper.instance.addSavedEndpoint(from);
-            logger.info("Received messages from newer protocol version {}. Ignoring", version);
-            return;
-        }
-        // outbound side will reconnect if necessary to upgrade version
-
         while (true)
         {
             MessagingService.validateMagic(in.readInt());


[4/6] cassandra git commit: merge from 2.0

Posted by jb...@apache.org.
merge from 2.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2e7b0884
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2e7b0884
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2e7b0884

Branch: refs/heads/trunk
Commit: 2e7b0884a2d2324642eca99707a3f25fef77362f
Parents: ed0026f a7cae32
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue May 12 10:56:43 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue May 12 10:56:43 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                           |  1 +
 .../cassandra/locator/ReconnectableSnitchHelper.java  |  1 -
 .../apache/cassandra/net/IncomingTcpConnection.java   | 14 ++++----------
 3 files changed, 5 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e7b0884/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 6e586a3,685b945..aa5f235
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,24 -1,5 +1,25 @@@
 -2.0.15:
 +2.1.6
 + * Fix commitlog getCompletedTasks to not increment (CASSANDRA-9339)
 + * Fix for harmless exceptions logged as ERROR (CASSANDRA-8564)
 + * Delete processed sstables in sstablesplit/sstableupgrade (CASSANDRA-8606)
 + * Improve sstable exclusion from partition tombstones (CASSANDRA-9298)
 + * Validate the indexed column rather than the cell's contents for 2i (CASSANDRA-9057)
 + * Add support for top-k custom 2i queries (CASSANDRA-8717)
 + * Fix error when dropping table during compaction (CASSANDRA-9251)
 + * cassandra-stress supports validation operations over user profiles (CASSANDRA-8773)
 + * Add support for rate limiting log messages (CASSANDRA-9029)
 + * Log the partition key with tombstone warnings (CASSANDRA-8561)
 + * Reduce runWithCompactionsDisabled poll interval to 1ms (CASSANDRA-9271)
 + * Fix PITR commitlog replay (CASSANDRA-9195)
 + * GCInspector logs very different times (CASSANDRA-9124)
 + * Fix deleting from an empty list (CASSANDRA-9198)
 + * Update tuple and collection types that use a user-defined type when that UDT
 +   is modified (CASSANDRA-9148, CASSANDRA-9192)
 + * Use higher timeout for prepair and snapshot in repair (CASSANDRA-9261)
 + * Fix anticompaction blocking ANTI_ENTROPY stage (CASSANDRA-9151)
 + * Repair waits for anticompaction to finish (CASSANDRA-9097)
 +Merged from 2.0:
+  * Fix ReconnectableSnitch reconnecting to peers during upgrade (CASSANDRA-6702)
   * Include keyspace and table name in error log for collections over the size
     limit (CASSANDRA-9286)
   * Avoid potential overlap in LCS with single-partition sstables (CASSANDRA-9322)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e7b0884/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/net/IncomingTcpConnection.java
index 08baf89,4817c75..2456050
--- a/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
+++ b/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
@@@ -158,18 -139,9 +161,9 @@@ public class IncomingTcpConnection exte
          }
          else
          {
 -            in = new DataInputStream(new BufferedInputStream(socket.getInputStream(), 4096));
 +            in = new DataInputStream(new BufferedInputStream(socket.getInputStream(), BUFFER_SIZE));
          }
  
-         if (version > MessagingService.current_version)
-         {
-             // save the endpoint so gossip will reconnect to it
-             Gossiper.instance.addSavedEndpoint(from);
-             logger.info("Received messages from newer protocol version {}. Ignoring", version);
-             return;
-         }
-         // outbound side will reconnect if necessary to upgrade version
- 
          while (true)
          {
              MessagingService.validateMagic(in.readInt());


[6/6] cassandra git commit: Merge branch 'cassandra-2.1' into trunk

Posted by jb...@apache.org.
Merge branch 'cassandra-2.1' into trunk


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5ff69f2c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5ff69f2c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5ff69f2c

Branch: refs/heads/trunk
Commit: 5ff69f2c92c170505fc7749fd814db7c74a38653
Parents: fa4a020 2e7b088
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue May 12 10:56:50 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue May 12 10:56:50 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                           |  1 +
 .../cassandra/locator/ReconnectableSnitchHelper.java  |  1 -
 .../apache/cassandra/net/IncomingTcpConnection.java   | 14 ++++----------
 3 files changed, 5 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5ff69f2c/CHANGES.txt
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5ff69f2c/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/net/IncomingTcpConnection.java
index d8721eb,2456050..c325717
--- a/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
+++ b/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
@@@ -131,11 -130,14 +131,14 @@@ public class IncomingTcpConnection exte
      {
          // handshake (true) endpoint versions
          DataOutputStream out = new DataOutputStream(socket.getOutputStream());
+         // if this version is < the MS version the other node is trying
+         // to connect with, the other node will disconnect
          out.writeInt(MessagingService.current_version);
          out.flush();
 -        DataInputStream in = new DataInputStream(socket.getInputStream());
 +        DataInput in = new DataInputStream(socket.getInputStream());
          int maxVersion = in.readInt();
- 
+         // outbound side will reconnect if necessary to upgrade version
+         assert version <= MessagingService.current_version;
          from = CompactEndpointSerializationHelper.deserialize(in);
          // record the (true) version of the endpoint
          MessagingService.instance().setVersion(from, maxVersion);
@@@ -159,18 -161,9 +162,9 @@@
          }
          else
          {
 -            in = new DataInputStream(new BufferedInputStream(socket.getInputStream(), BUFFER_SIZE));
 +            in = new NIODataInputStream(socket.getChannel(), BUFFER_SIZE);
          }
  
-         if (version > MessagingService.current_version)
-         {
-             // save the endpoint so gossip will reconnect to it
-             Gossiper.instance.addSavedEndpoint(from);
-             logger.info("Received messages from newer protocol version {}. Ignoring", version);
-             return;
-         }
-         // outbound side will reconnect if necessary to upgrade version
- 
          while (true)
          {
              MessagingService.validateMagic(in.readInt());


[5/6] cassandra git commit: merge from 2.0

Posted by jb...@apache.org.
merge from 2.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2e7b0884
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2e7b0884
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2e7b0884

Branch: refs/heads/cassandra-2.1
Commit: 2e7b0884a2d2324642eca99707a3f25fef77362f
Parents: ed0026f a7cae32
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue May 12 10:56:43 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue May 12 10:56:43 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                           |  1 +
 .../cassandra/locator/ReconnectableSnitchHelper.java  |  1 -
 .../apache/cassandra/net/IncomingTcpConnection.java   | 14 ++++----------
 3 files changed, 5 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e7b0884/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 6e586a3,685b945..aa5f235
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,24 -1,5 +1,25 @@@
 -2.0.15:
 +2.1.6
 + * Fix commitlog getCompletedTasks to not increment (CASSANDRA-9339)
 + * Fix for harmless exceptions logged as ERROR (CASSANDRA-8564)
 + * Delete processed sstables in sstablesplit/sstableupgrade (CASSANDRA-8606)
 + * Improve sstable exclusion from partition tombstones (CASSANDRA-9298)
 + * Validate the indexed column rather than the cell's contents for 2i (CASSANDRA-9057)
 + * Add support for top-k custom 2i queries (CASSANDRA-8717)
 + * Fix error when dropping table during compaction (CASSANDRA-9251)
 + * cassandra-stress supports validation operations over user profiles (CASSANDRA-8773)
 + * Add support for rate limiting log messages (CASSANDRA-9029)
 + * Log the partition key with tombstone warnings (CASSANDRA-8561)
 + * Reduce runWithCompactionsDisabled poll interval to 1ms (CASSANDRA-9271)
 + * Fix PITR commitlog replay (CASSANDRA-9195)
 + * GCInspector logs very different times (CASSANDRA-9124)
 + * Fix deleting from an empty list (CASSANDRA-9198)
 + * Update tuple and collection types that use a user-defined type when that UDT
 +   is modified (CASSANDRA-9148, CASSANDRA-9192)
 + * Use higher timeout for prepair and snapshot in repair (CASSANDRA-9261)
 + * Fix anticompaction blocking ANTI_ENTROPY stage (CASSANDRA-9151)
 + * Repair waits for anticompaction to finish (CASSANDRA-9097)
 +Merged from 2.0:
+  * Fix ReconnectableSnitch reconnecting to peers during upgrade (CASSANDRA-6702)
   * Include keyspace and table name in error log for collections over the size
     limit (CASSANDRA-9286)
   * Avoid potential overlap in LCS with single-partition sstables (CASSANDRA-9322)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e7b0884/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/net/IncomingTcpConnection.java
index 08baf89,4817c75..2456050
--- a/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
+++ b/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
@@@ -158,18 -139,9 +161,9 @@@ public class IncomingTcpConnection exte
          }
          else
          {
 -            in = new DataInputStream(new BufferedInputStream(socket.getInputStream(), 4096));
 +            in = new DataInputStream(new BufferedInputStream(socket.getInputStream(), BUFFER_SIZE));
          }
  
-         if (version > MessagingService.current_version)
-         {
-             // save the endpoint so gossip will reconnect to it
-             Gossiper.instance.addSavedEndpoint(from);
-             logger.info("Received messages from newer protocol version {}. Ignoring", version);
-             return;
-         }
-         // outbound side will reconnect if necessary to upgrade version
- 
          while (true)
          {
              MessagingService.validateMagic(in.readInt());


[3/6] cassandra git commit: Fix ReconnectableSnitch reconnecting to peers during upgrade

Posted by jb...@apache.org.
Fix ReconnectableSnitch reconnecting to peers during upgrade


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a7cae325
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a7cae325
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a7cae325

Branch: refs/heads/trunk
Commit: a7cae3255cc7a8014804c7642eaefc6f35099a3e
Parents: 15235ee
Author: Blake Eggleston <bd...@gmail.com>
Authored: Tue May 12 10:55:43 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue May 12 10:56:04 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                           |  1 +
 .../cassandra/locator/ReconnectableSnitchHelper.java  |  1 -
 .../apache/cassandra/net/IncomingTcpConnection.java   | 14 ++++----------
 3 files changed, 5 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a7cae325/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index d3715c4..685b945 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.0.15:
+ * Fix ReconnectableSnitch reconnecting to peers during upgrade (CASSANDRA-6702)
  * Include keyspace and table name in error log for collections over the size
    limit (CASSANDRA-9286)
  * Avoid potential overlap in LCS with single-partition sstables (CASSANDRA-9322)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a7cae325/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java b/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
index e5dbdeb..3277af7 100644
--- a/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
+++ b/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
@@ -60,7 +60,6 @@ public class ReconnectableSnitchHelper implements IEndpointStateChangeSubscriber
     private void reconnect(InetAddress publicAddress, InetAddress localAddress)
     {
         if (snitch.getDatacenter(publicAddress).equals(localDc)
-                && MessagingService.instance().getVersion(publicAddress) == MessagingService.current_version
                 && !MessagingService.instance().getConnectionPool(publicAddress).endPoint().equals(localAddress))
         {
             MessagingService.instance().getConnectionPool(publicAddress).reset(localAddress);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a7cae325/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/IncomingTcpConnection.java b/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
index b61e82e..4817c75 100644
--- a/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
+++ b/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
@@ -119,11 +119,14 @@ public class IncomingTcpConnection extends Thread implements Closeable
     {
         // handshake (true) endpoint versions
         DataOutputStream out = new DataOutputStream(socket.getOutputStream());
+        // if this version is < the MS version the other node is trying
+        // to connect with, the other node will disconnect
         out.writeInt(MessagingService.current_version);
         out.flush();
         DataInputStream in = new DataInputStream(socket.getInputStream());
         int maxVersion = in.readInt();
-
+        // outbound side will reconnect if necessary to upgrade version
+        assert version <= MessagingService.current_version;
         from = CompactEndpointSerializationHelper.deserialize(in);
         // record the (true) version of the endpoint
         MessagingService.instance().setVersion(from, maxVersion);
@@ -139,15 +142,6 @@ public class IncomingTcpConnection extends Thread implements Closeable
             in = new DataInputStream(new BufferedInputStream(socket.getInputStream(), 4096));
         }
 
-        if (version > MessagingService.current_version)
-        {
-            // save the endpoint so gossip will reconnect to it
-            Gossiper.instance.addSavedEndpoint(from);
-            logger.info("Received messages from newer protocol version {}. Ignoring", version);
-            return;
-        }
-        // outbound side will reconnect if necessary to upgrade version
-
         while (true)
         {
             MessagingService.validateMagic(in.readInt());