You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by al...@apache.org on 2014/10/07 17:39:00 UTC
[1/2] git commit: Record the real messaging version in all cases in
OutboundTcpConnection
Repository: cassandra
Updated Branches:
refs/heads/cassandra-2.0 df046dfe0 -> e70f4f81a
Record the real messaging version in all cases in OutboundTcpConnection
patch by Aleksey Yeschenko; reviewed by Piotr Kołaczkowski for
CASSANDRA-8057
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f5a43214
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f5a43214
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f5a43214
Branch: refs/heads/cassandra-2.0
Commit: f5a432147178ca22d7b6c5e810c12df70895c5b0
Parents: df046df
Author: Aleksey Yeschenko <al...@apache.org>
Authored: Tue Oct 7 18:33:31 2014 +0300
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Tue Oct 7 18:33:31 2014 +0300
----------------------------------------------------------------------
CHANGES.txt | 2 ++
src/java/org/apache/cassandra/net/OutboundTcpConnection.java | 7 +++++--
2 files changed, 7 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f5a43214/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index c811ebf..a249d83 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
2.0.11:
+ * Record the real messaging version in all cases in OutboundTcpConnection
+ (CASSANDRA-8057)
* SSL does not work in cassandra-cli (CASSANDRA-7899)
* Fix potential exception when using ReversedType in DynamicCompositeType
(CASSANDRA-7898)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f5a43214/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/OutboundTcpConnection.java b/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
index 8b8872b..c1de563 100644
--- a/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
+++ b/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
@@ -334,10 +334,14 @@ public class OutboundTcpConnection extends Thread
disconnect();
continue;
}
+ else
+ {
+ MessagingService.instance().setVersion(poolReference.endPoint(), maxTargetVersion);
+ }
+
if (targetVersion > maxTargetVersion)
{
logger.debug("Target max version is {}; will reconnect with that version", maxTargetVersion);
- MessagingService.instance().setVersion(poolReference.endPoint(), maxTargetVersion);
disconnect();
return false;
}
@@ -346,7 +350,6 @@ public class OutboundTcpConnection extends Thread
{
logger.trace("Detected higher max version {} (using {}); will reconnect when queued messages are done",
maxTargetVersion, targetVersion);
- MessagingService.instance().setVersion(poolReference.endPoint(), Math.min(MessagingService.current_version, maxTargetVersion));
softCloseSocket();
}
[2/2] git commit: Don't reset nodes' versions when closing
IncomingTcpConnections
Posted by al...@apache.org.
Don't reset nodes' versions when closing IncomingTcpConnections
patch by Aleksey Yeschenko; reviewed by Marcus Eriksson for
CASSANDRA-7734
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e70f4f81
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e70f4f81
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e70f4f81
Branch: refs/heads/cassandra-2.0
Commit: e70f4f81a223f6bad9823673b770581cbfcda34c
Parents: f5a4321
Author: Aleksey Yeschenko <al...@apache.org>
Authored: Tue Oct 7 18:37:09 2014 +0300
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Tue Oct 7 18:37:09 2014 +0300
----------------------------------------------------------------------
CHANGES.txt | 2 ++
.../cassandra/net/IncomingTcpConnection.java | 28 +++++++-------------
.../apache/cassandra/net/MessagingService.java | 2 +-
3 files changed, 13 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e70f4f81/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index a249d83..188f951 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
2.0.11:
+ * Don't reset nodes' versions when closing IncomingTcpConnections
+ (CASSANDRA-7734)
* Record the real messaging version in all cases in OutboundTcpConnection
(CASSANDRA-8057)
* SSL does not work in cassandra-cli (CASSANDRA-7899)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e70f4f81/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 f1e2193..3296cfd 100644
--- a/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
+++ b/src/java/org/apache/cassandra/net/IncomingTcpConnection.java
@@ -69,9 +69,9 @@ public class IncomingTcpConnection extends Thread
try
{
if (version < MessagingService.VERSION_12)
- handleLegacyVersion();
- else
- handleModernVersion();
+ throw new UnsupportedOperationException("Unable to read obsolete message version " + version + "; the earliest version supported is 1.2.0");
+
+ receiveMessages();
}
catch (EOFException e)
{
@@ -92,15 +92,19 @@ public class IncomingTcpConnection extends Thread
}
}
- private void handleModernVersion() throws IOException
+ private void receiveMessages() throws IOException
{
+ // handshake (true) endpoint versions
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeInt(MessagingService.current_version);
out.flush();
-
DataInputStream in = new DataInputStream(socket.getInputStream());
int maxVersion = in.readInt();
+
from = CompactEndpointSerializationHelper.deserialize(in);
+ // record the (true) version of the endpoint
+ MessagingService.instance().setVersion(from, maxVersion);
+ logger.debug("Set version for {} to {} (will use {})", from, maxVersion, MessagingService.instance().getVersion(from));
if (compressed)
{
@@ -112,7 +116,6 @@ public class IncomingTcpConnection extends Thread
in = new DataInputStream(new BufferedInputStream(socket.getInputStream(), 4096));
}
- logger.debug("Max version for {} is {}", from, maxVersion);
if (version > MessagingService.current_version)
{
// save the endpoint so gossip will reconnect to it
@@ -120,8 +123,6 @@ public class IncomingTcpConnection extends Thread
logger.info("Received messages from newer protocol version {}. Ignoring", version);
return;
}
- MessagingService.instance().setVersion(from, maxVersion);
- logger.debug("Set version for {} to {} (will use {})", from, maxVersion, Math.min(MessagingService.current_version, maxVersion));
// outbound side will reconnect if necessary to upgrade version
while (true)
@@ -131,11 +132,6 @@ public class IncomingTcpConnection extends Thread
}
}
- private void handleLegacyVersion()
- {
- throw new UnsupportedOperationException("Unable to read obsolete message version " + version + "; the earliest version supported is 1.2.0");
- }
-
private InetAddress receiveMessage(DataInputStream input, int version) throws IOException
{
int id;
@@ -169,17 +165,13 @@ public class IncomingTcpConnection extends Thread
private void close()
{
- // reset version here, since we set when starting an incoming socket
- if (from != null)
- MessagingService.instance().resetVersion(from);
try
{
socket.close();
}
catch (IOException e)
{
- if (logger.isDebugEnabled())
- logger.debug("error closing socket", e);
+ logger.debug("Error closing socket", e);
}
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e70f4f81/src/java/org/apache/cassandra/net/MessagingService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java
index 0bb1b17..d2e65d8 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -791,7 +791,7 @@ public final class MessagingService implements MessagingServiceMBean
public void resetVersion(InetAddress endpoint)
{
- logger.debug("Reseting version for {}", endpoint);
+ logger.debug("Resetting version for {}", endpoint);
Integer removed = versions.remove(endpoint);
if (removed != null && removed <= VERSION_20)
refreshAllNodesAtLeast20();