You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by xe...@apache.org on 2012/09/19 00:25:15 UTC

git commit: fix cross-version gossip messaging patch by Pavel Yaskevich; reviewed by Brandon Williams for CASSANDRA-4576

Updated Branches:
  refs/heads/trunk 09d3e7f7f -> 1693ee22f


fix cross-version gossip messaging
patch by Pavel Yaskevich; reviewed by Brandon Williams for CASSANDRA-4576


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

Branch: refs/heads/trunk
Commit: 1693ee22fe70049ee3dd45eb211fb4f902dc8d9f
Parents: 09d3e7f
Author: Pavel Yaskevich <xe...@apache.org>
Authored: Tue Sep 18 18:32:53 2012 +0300
Committer: Pavel Yaskevich <xe...@apache.org>
Committed: Wed Sep 19 01:24:52 2012 +0300

----------------------------------------------------------------------
 CHANGES.txt                                        |    1 +
 .../org/apache/cassandra/gms/GossipDigestAck.java  |    4 ++--
 .../org/apache/cassandra/gms/VersionedValue.java   |   11 ++++++++---
 3 files changed, 11 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/1693ee22/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 1dd875e..3ff91ad 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -64,6 +64,7 @@
  * (cql3) Add ALTER KEYSPACE statement (CASSANDRA-4611)
  * (cql3) Allow defining default consistency levels (CASSANDRA-4448)
  * (cql3) Fix queries using LIMIT missing results (CASSANDRA-4579)
+ * fix cross-version gossip messaging (CASSANDRA-4576)
 
 
 1.1.6

http://git-wip-us.apache.org/repos/asf/cassandra/blob/1693ee22/src/java/org/apache/cassandra/gms/GossipDigestAck.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/gms/GossipDigestAck.java b/src/java/org/apache/cassandra/gms/GossipDigestAck.java
index b7ea067..68dcff4 100644
--- a/src/java/org/apache/cassandra/gms/GossipDigestAck.java
+++ b/src/java/org/apache/cassandra/gms/GossipDigestAck.java
@@ -63,7 +63,7 @@ class GossipDigestAckSerializer implements IVersionedSerializer<GossipDigestAck>
     public void serialize(GossipDigestAck gDigestAckMessage, DataOutput dos, int version) throws IOException
     {
         GossipDigestSerializationHelper.serialize(gDigestAckMessage.gDigestList, dos, version);
-        if (version <= MessagingService.VERSION_10)
+        if (version <= MessagingService.VERSION_11)
             dos.writeBoolean(true); // 0.6 compatibility
         dos.writeInt(gDigestAckMessage.epStateMap.size());
         for (Map.Entry<InetAddress, EndpointState> entry : gDigestAckMessage.epStateMap.entrySet())
@@ -77,7 +77,7 @@ class GossipDigestAckSerializer implements IVersionedSerializer<GossipDigestAck>
     public GossipDigestAck deserialize(DataInput dis, int version) throws IOException
     {
         List<GossipDigest> gDigestList = GossipDigestSerializationHelper.deserialize(dis, version);
-        if (version <= MessagingService.VERSION_10)
+        if (version <= MessagingService.VERSION_11)
             dis.readBoolean(); // 0.6 compatibility
         int size = dis.readInt();
         Map<InetAddress, EndpointState> epStateMap = new HashMap<InetAddress, EndpointState>(size);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/1693ee22/src/java/org/apache/cassandra/gms/VersionedValue.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/gms/VersionedValue.java b/src/java/org/apache/cassandra/gms/VersionedValue.java
index 8436adc..e2d68a7 100644
--- a/src/java/org/apache/cassandra/gms/VersionedValue.java
+++ b/src/java/org/apache/cassandra/gms/VersionedValue.java
@@ -260,14 +260,19 @@ public class VersionedValue implements Comparable<VersionedValue>
 
                 if ((type.equals(STATUS_NORMAL)) || type.equals(STATUS_BOOTSTRAPPING))
                 {
-                    assert pieces.length >= 3;
-                    outValue = versionString(pieces[0], pieces[2]);
+                    assert pieces.length >= 2;
+                    outValue = versionString(pieces[0], pieces[1]);
                 }
 
                 if (type.equals(STATUS_LEFT))
                 {
                     assert pieces.length >= 3;
-                    outValue = versionString(pieces[0], pieces[2], pieces[1]);
+
+                    // three component 'left' was adopted starting from Cassandra 1.0
+                    // previous versions have '<type>:<token>' format
+                    outValue = (version < MessagingService.VERSION_10)
+                                ? versionString(pieces[0], pieces[2])
+                                : versionString(pieces[0], pieces[2], pieces[1]);
                 }
 
                 if ((type.equals(REMOVAL_COORDINATOR)) || (type.equals(REMOVING_TOKEN)) || (type.equals(REMOVED_TOKEN)))