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)))