Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 7FEB9102D2 for ; Wed, 26 Jun 2013 15:46:58 +0000 (UTC) Received: (qmail 49063 invoked by uid 500); 26 Jun 2013 15:46:58 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 49045 invoked by uid 500); 26 Jun 2013 15:46:58 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 49036 invoked by uid 99); 26 Jun 2013 15:46:57 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 26 Jun 2013 15:46:57 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 5F0501D56F; Wed, 26 Jun 2013 15:46:57 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: slebresne@apache.org To: commits@cassandra.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: git commit: Ensures paging changes to native protocol are properly versioned Date: Wed, 26 Jun 2013 15:46:57 +0000 (UTC) Updated Branches: refs/heads/trunk 3ec4ff5ed -> 8c062d807 Ensures paging changes to native protocol are properly versioned Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8c062d80 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8c062d80 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8c062d80 Branch: refs/heads/trunk Commit: 8c062d807e4a4c497dbc9a07c5d256ebf92e80fa Parents: 3ec4ff5 Author: Sylvain Lebresne Authored: Wed Jun 26 17:46:50 2013 +0200 Committer: Sylvain Lebresne Committed: Wed Jun 26 17:46:50 2013 +0200 ---------------------------------------------------------------------- .../transport/messages/ExecuteMessage.java | 10 ++++- .../transport/messages/QueryMessage.java | 42 +++++++++++--------- 2 files changed, 32 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/8c062d80/src/java/org/apache/cassandra/transport/messages/ExecuteMessage.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/transport/messages/ExecuteMessage.java b/src/java/org/apache/cassandra/transport/messages/ExecuteMessage.java index 7c35e42..2d6b67b 100644 --- a/src/java/org/apache/cassandra/transport/messages/ExecuteMessage.java +++ b/src/java/org/apache/cassandra/transport/messages/ExecuteMessage.java @@ -50,7 +50,10 @@ public class ExecuteMessage extends Message.Request values.add(CBUtil.readValue(body)); ConsistencyLevel consistency = CBUtil.readConsistencyLevel(body); - int resultPageSize = body.readInt(); + + int resultPageSize = -1; + if (version >= 2) + resultPageSize = body.readInt(); return new ExecuteMessage(id, values, consistency, resultPageSize); } @@ -71,7 +74,10 @@ public class ExecuteMessage extends Message.Request builder.addValue(value); builder.add(CBUtil.consistencyLevelToCB(msg.consistency)); - builder.add(CBUtil.intToCB(msg.resultPageSize)); + + assert msg.resultPageSize == -1 || version >= 2; + if (version >= 2) + builder.add(CBUtil.intToCB(msg.resultPageSize)); return builder.build(); } }; http://git-wip-us.apache.org/repos/asf/cassandra/blob/8c062d80/src/java/org/apache/cassandra/transport/messages/QueryMessage.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/transport/messages/QueryMessage.java b/src/java/org/apache/cassandra/transport/messages/QueryMessage.java index 860c404..1ec556c 100644 --- a/src/java/org/apache/cassandra/transport/messages/QueryMessage.java +++ b/src/java/org/apache/cassandra/transport/messages/QueryMessage.java @@ -45,18 +45,20 @@ public class QueryMessage extends Message.Request { String query = CBUtil.readLongString(body); ConsistencyLevel consistency = CBUtil.readConsistencyLevel(body); - int resultPageSize = body.readInt(); - List values; - if (body.readable()) - { - int paramCount = body.readUnsignedShort(); - values = paramCount == 0 ? Collections.emptyList() : new ArrayList(paramCount); - for (int i = 0; i < paramCount; i++) - values.add(CBUtil.readValue(body)); - } - else + + int resultPageSize = -1; + List values = Collections.emptyList(); + + if (version >= 2) { - values = Collections.emptyList(); + resultPageSize = body.readInt(); + if (body.readable()) + { + int paramCount = body.readUnsignedShort(); + values = paramCount == 0 ? Collections.emptyList() : new ArrayList(paramCount); + for (int i = 0; i < paramCount; i++) + values.add(CBUtil.readValue(body)); + } } return new QueryMessage(query, values, consistency, resultPageSize); } @@ -70,16 +72,20 @@ public class QueryMessage extends Message.Request // - Number of values // - The values int vs = msg.values.size(); - CBUtil.BufferBuilder builder = new CBUtil.BufferBuilder(3 + (vs > 0 ? 1 : 0), 0, vs); + assert (msg.resultPageSize == -1 && vs == 0) || version >= 2 : "Version 1 of the protocol support neither a page size nor values"; + + CBUtil.BufferBuilder builder = new CBUtil.BufferBuilder(2 + (version == 1 ? 0 : 1 + (vs > 0 ? 1 : 0)), 0, vs); builder.add(CBUtil.longStringToCB(msg.query)); builder.add(CBUtil.consistencyLevelToCB(msg.consistency)); - builder.add(CBUtil.intToCB(msg.resultPageSize)); - if (vs > 0) + if (version >= 2) { - assert version > 1 : "Version 1 of the protocol do not allow values"; - builder.add(CBUtil.shortToCB(vs)); - for (ByteBuffer value : msg.values) - builder.addValue(value); + builder.add(CBUtil.intToCB(msg.resultPageSize)); + if (vs > 0) + { + builder.add(CBUtil.shortToCB(vs)); + for (ByteBuffer value : msg.values) + builder.addValue(value); + } } return builder.build(); }