You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2013/04/12 04:07:09 UTC
git commit: Avoid serializing keyspace redundantly in RowMutation
patch by jbellis; reviewed by vijay for CASSANDRA-5458
Updated Branches:
refs/heads/trunk 0c7141ee8 -> f04359d91
Avoid serializing keyspace redundantly in RowMutation
patch by jbellis; reviewed by vijay for CASSANDRA-5458
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f04359d9
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f04359d9
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f04359d9
Branch: refs/heads/trunk
Commit: f04359d91ae3ea3adca6e13f74a7c54e3845cab7
Parents: 0c7141e
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Apr 11 21:06:28 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Apr 11 21:06:28 2013 -0500
----------------------------------------------------------------------
src/java/org/apache/cassandra/db/RowMutation.java | 22 ++++++++++++---
1 files changed, 17 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f04359d9/src/java/org/apache/cassandra/db/RowMutation.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/RowMutation.java b/src/java/org/apache/cassandra/db/RowMutation.java
index dcc62c5..ef63027 100644
--- a/src/java/org/apache/cassandra/db/RowMutation.java
+++ b/src/java/org/apache/cassandra/db/RowMutation.java
@@ -69,7 +69,7 @@ public class RowMutation implements IMutation
public RowMutation(ByteBuffer key, ColumnFamily cf)
{
- this(Schema.instance.getCFMetaData(cf.id()).ksName, key, cf);
+ this(cf.metadata().ksName, key, cf);
}
public String getTable()
@@ -239,13 +239,15 @@ public class RowMutation implements IMutation
{
public void serialize(RowMutation rm, DataOutput out, int version) throws IOException
{
- out.writeUTF(rm.getTable());
+ if (version < MessagingService.VERSION_20)
+ out.writeUTF(rm.getTable());
+
ByteBufferUtil.writeWithShortLength(rm.key(), out);
/* serialize the modifications in the mutation */
int size = rm.modifications.size();
out.writeInt(size);
- assert size >= 0;
+ assert size > 0;
for (Map.Entry<UUID, ColumnFamily> entry : rm.modifications.entrySet())
{
if (version < MessagingService.VERSION_12)
@@ -256,15 +258,20 @@ public class RowMutation implements IMutation
public RowMutation deserialize(DataInput in, int version, ColumnSerializer.Flag flag) throws IOException
{
- String table = in.readUTF();
+ String table = null; // will always be set from cf.metadata but javac isn't smart enough to see that
+ if (version < MessagingService.VERSION_20)
+ table = in.readUTF();
+
ByteBuffer key = ByteBufferUtil.readWithShortLength(in);
int size = in.readInt();
+ assert size > 0;
Map<UUID, ColumnFamily> modifications;
if (size == 1)
{
ColumnFamily cf = deserializeOneCf(in, version, flag);
modifications = Collections.singletonMap(cf.id(), cf);
+ table = cf.metadata().ksName;
}
else
{
@@ -273,6 +280,7 @@ public class RowMutation implements IMutation
{
ColumnFamily cf = deserializeOneCf(in, version, flag);
modifications.put(cf.id(), cf);
+ table = cf.metadata().ksName;
}
}
@@ -298,7 +306,11 @@ public class RowMutation implements IMutation
public long serializedSize(RowMutation rm, int version)
{
TypeSizes sizes = TypeSizes.NATIVE;
- int size = sizes.sizeof(rm.getTable());
+ int size = 0;
+
+ if (version < MessagingService.VERSION_20)
+ size += sizes.sizeof(rm.getTable());
+
int keySize = rm.key().remaining();
size += sizes.sizeof((short) keySize) + keySize;