Updated Branches: refs/heads/trunk 6decaf4e8 -> d28034916
Add a native_protocol_version column to the system.local table. patch by jasobrown; reviewed by thobbs for CASSANDRA-5819 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d2803491 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d2803491 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d2803491 Branch: refs/heads/trunk Commit: d28034916f2cc52a52912fda6c32417b00c3c053 Parents: 6decaf4 Author: Jason Brown <jasedbr...@gmail.com> Authored: Mon Jul 29 07:13:38 2013 -0700 Committer: Jason Brown <jasedbr...@gmail.com> Committed: Mon Jul 29 09:30:53 2013 -0700 ---------------------------------------------------------------------- CHANGES.txt | 1 + src/java/org/apache/cassandra/config/CFMetaData.java | 1 + src/java/org/apache/cassandra/db/SystemKeyspace.java | 5 +++-- src/java/org/apache/cassandra/transport/Frame.java | 3 +-- src/java/org/apache/cassandra/transport/Message.java | 2 +- src/java/org/apache/cassandra/transport/Server.java | 3 +++ src/java/org/apache/cassandra/transport/SimpleClient.java | 4 ++-- 7 files changed, 12 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/d2803491/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 6b5f91c..deb0333 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -5,6 +5,7 @@ * Fix assertion error during repair (CASSANDRA-5801) * Fix range tombstone bug (CASSANDRA-5805) * DC-local CAS (CASSANDRA-5797) + * Add a native_protocol_version column to the system.local table (CASSANRDA-5819) Merged from 1.2: * cqlsh: add collections support to COPY (CASSANDRA-5698) * retry important messages for any IOException (CASSANDRA-5804) http://git-wip-us.apache.org/repos/asf/cassandra/blob/d2803491/src/java/org/apache/cassandra/config/CFMetaData.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java index 39026bf..8fbb70b 100644 --- a/src/java/org/apache/cassandra/config/CFMetaData.java +++ b/src/java/org/apache/cassandra/config/CFMetaData.java @@ -203,6 +203,7 @@ public final class CFMetaData + "release_version text," + "thrift_version text," + "cql_version text," + + "native_protocol_version text," + "data_center text," + "rack text," + "partitioner text," http://git-wip-us.apache.org/repos/asf/cassandra/blob/d2803491/src/java/org/apache/cassandra/db/SystemKeyspace.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/SystemKeyspace.java b/src/java/org/apache/cassandra/db/SystemKeyspace.java index 5a60914..dba3421 100644 --- a/src/java/org/apache/cassandra/db/SystemKeyspace.java +++ b/src/java/org/apache/cassandra/db/SystemKeyspace.java @@ -22,13 +22,13 @@ import java.io.IOException; import java.net.InetAddress; import java.nio.ByteBuffer; import java.util.*; -import java.util.concurrent.ExecutionException; import com.google.common.base.Function; import com.google.common.collect.HashMultimap; import com.google.common.collect.Iterables; import com.google.common.collect.SetMultimap; import com.google.common.collect.Sets; +import org.apache.cassandra.transport.Server; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -116,13 +116,14 @@ public class SystemKeyspace private static void setupVersion() { - String req = "INSERT INTO system.%s (key, release_version, cql_version, thrift_version, data_center, rack, partitioner) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s')"; + String req = "INSERT INTO system.%s (key, release_version, cql_version, thrift_version, native_protocol_version, data_center, rack, partitioner) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')"; IEndpointSnitch snitch = DatabaseDescriptor.getEndpointSnitch(); processInternal(String.format(req, LOCAL_CF, LOCAL_KEY, FBUtilities.getReleaseVersionString(), QueryProcessor.CQL_VERSION.toString(), cassandraConstants.VERSION, + Server.CURRENT_VERSION, snitch.getDatacenter(FBUtilities.getBroadcastAddress()), snitch.getRack(FBUtilities.getBroadcastAddress()), DatabaseDescriptor.getPartitioner().getClass().getName())); http://git-wip-us.apache.org/repos/asf/cassandra/blob/d2803491/src/java/org/apache/cassandra/transport/Frame.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/transport/Frame.java b/src/java/org/apache/cassandra/transport/Frame.java index b19ea33..0d5185c 100644 --- a/src/java/org/apache/cassandra/transport/Frame.java +++ b/src/java/org/apache/cassandra/transport/Frame.java @@ -82,7 +82,6 @@ public class Frame public static class Header { public static final int LENGTH = 8; - public static final int CURRENT_VERSION = 2; public final int version; public final EnumSet<Flag> flags; @@ -163,7 +162,7 @@ public class Frame Message.Direction direction = Message.Direction.extractFromVersion(firstByte); int version = firstByte & 0x7F; - if (version > Header.CURRENT_VERSION) + if (version > Server.CURRENT_VERSION) throw new ProtocolException("Invalid or unsupported protocol version: " + version); // Validate the opcode http://git-wip-us.apache.org/repos/asf/cassandra/blob/d2803491/src/java/org/apache/cassandra/transport/Message.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/transport/Message.java b/src/java/org/apache/cassandra/transport/Message.java index 557bddf..dbf1595 100644 --- a/src/java/org/apache/cassandra/transport/Message.java +++ b/src/java/org/apache/cassandra/transport/Message.java @@ -249,7 +249,7 @@ public abstract class Message Connection connection = (Connection)channel.getAttachment(); // The only case the connection can be null is when we send the initial STARTUP message (client side thus) - int version = connection == null ? Frame.Header.CURRENT_VERSION : connection.getVersion(); + int version = connection == null ? Server.CURRENT_VERSION : connection.getVersion(); ChannelBuffer body = message.encode(version); EnumSet<Frame.Header.Flag> flags = EnumSet.noneOf(Frame.Header.Flag.class); http://git-wip-us.apache.org/repos/asf/cassandra/blob/d2803491/src/java/org/apache/cassandra/transport/Server.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/transport/Server.java b/src/java/org/apache/cassandra/transport/Server.java index 0a0a77c..5ac4a70 100644 --- a/src/java/org/apache/cassandra/transport/Server.java +++ b/src/java/org/apache/cassandra/transport/Server.java @@ -64,6 +64,9 @@ public class Server implements CassandraDaemon.Server private static final Logger logger = LoggerFactory.getLogger(Server.class); + /** current version of the native protocol we support */ + public static final int CURRENT_VERSION = 2; + private final ConnectionTracker connectionTracker = new ConnectionTracker(); private final Connection.Factory connectionFactory = new Connection.Factory() http://git-wip-us.apache.org/repos/asf/cassandra/blob/d2803491/src/java/org/apache/cassandra/transport/SimpleClient.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/transport/SimpleClient.java b/src/java/org/apache/cassandra/transport/SimpleClient.java index cfe1bab..94be162 100644 --- a/src/java/org/apache/cassandra/transport/SimpleClient.java +++ b/src/java/org/apache/cassandra/transport/SimpleClient.java @@ -74,7 +74,7 @@ public class SimpleClient protected final ResponseHandler responseHandler = new ResponseHandler(); protected final Connection.Tracker tracker = new ConnectionTracker(); // We don't track connection really, so we don't need one Connection per channel - protected final Connection connection = new Connection(null, Frame.Header.CURRENT_VERSION, tracker); + protected final Connection connection = new Connection(null, Server.CURRENT_VERSION, tracker); protected ClientBootstrap bootstrap; protected Channel channel; protected ChannelFuture lastWriteFuture; @@ -83,7 +83,7 @@ public class SimpleClient { public Connection newConnection(Channel channel, int version) { - assert version == Frame.Header.CURRENT_VERSION; + assert version == Server.CURRENT_VERSION; return connection; } };