You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2013/06/26 17:46:57 UTC
git commit: Ensures paging changes to native protocol are properly
versioned
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 <sy...@datastax.com>
Authored: Wed Jun 26 17:46:50 2013 +0200
Committer: Sylvain Lebresne <sy...@datastax.com>
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<ByteBuffer> values;
- if (body.readable())
- {
- int paramCount = body.readUnsignedShort();
- values = paramCount == 0 ? Collections.<ByteBuffer>emptyList() : new ArrayList<ByteBuffer>(paramCount);
- for (int i = 0; i < paramCount; i++)
- values.add(CBUtil.readValue(body));
- }
- else
+
+ int resultPageSize = -1;
+ List<ByteBuffer> values = Collections.emptyList();
+
+ if (version >= 2)
{
- values = Collections.emptyList();
+ resultPageSize = body.readInt();
+ if (body.readable())
+ {
+ int paramCount = body.readUnsignedShort();
+ values = paramCount == 0 ? Collections.<ByteBuffer>emptyList() : new ArrayList<ByteBuffer>(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();
}