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 2012/08/31 15:44:44 UTC
[2/2] git commit: optimize WriteResponse patch by jbellis;
reviewed by brandonwilliams for CASSANDRA-4548
optimize WriteResponse
patch by jbellis; reviewed by brandonwilliams for CASSANDRA-4548
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/fd2ddb5c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/fd2ddb5c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/fd2ddb5c
Branch: refs/heads/trunk
Commit: fd2ddb5c3e628d4406761b9359112f6d18fa64b6
Parents: bd27527
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Aug 31 07:29:59 2012 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Aug 31 08:44:25 2012 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../cassandra/db/CounterMutationVerbHandler.java | 2 +-
.../apache/cassandra/db/ReadRepairVerbHandler.java | 2 +-
.../cassandra/db/RowMutationVerbHandler.java | 2 +-
.../org/apache/cassandra/db/WriteResponse.java | 54 ++++----------
.../apache/cassandra/db/SerializationsTest.java | 4 +-
6 files changed, 22 insertions(+), 43 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fd2ddb5c/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 5019369..e7a6a1b 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
1.2-dev
+ * optimize WriteResponse (CASSANDRA-4548)
* new metrics (CASSANDRA-4009)
* redesign KEYS indexes to avoid read-before-write (CASSANDRA-2897)
* debug tracing (CASSANDRA-1123)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fd2ddb5c/src/java/org/apache/cassandra/db/CounterMutationVerbHandler.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/CounterMutationVerbHandler.java b/src/java/org/apache/cassandra/db/CounterMutationVerbHandler.java
index a8ff533..edd4fe3 100644
--- a/src/java/org/apache/cassandra/db/CounterMutationVerbHandler.java
+++ b/src/java/org/apache/cassandra/db/CounterMutationVerbHandler.java
@@ -45,7 +45,7 @@ public class CounterMutationVerbHandler implements IVerbHandler<CounterMutation>
String localDataCenter = DatabaseDescriptor.getEndpointSnitch().getDatacenter(FBUtilities.getBroadcastAddress());
StorageProxy.applyCounterMutationOnLeader(cm, localDataCenter).get();
- WriteResponse response = new WriteResponse(cm.getTable(), cm.key(), true);
+ WriteResponse response = new WriteResponse();
MessagingService.instance().sendReply(response.createMessage(), id, message.from);
}
catch (UnavailableException e)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fd2ddb5c/src/java/org/apache/cassandra/db/ReadRepairVerbHandler.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ReadRepairVerbHandler.java b/src/java/org/apache/cassandra/db/ReadRepairVerbHandler.java
index 713d97d..373117a 100644
--- a/src/java/org/apache/cassandra/db/ReadRepairVerbHandler.java
+++ b/src/java/org/apache/cassandra/db/ReadRepairVerbHandler.java
@@ -27,7 +27,7 @@ public class ReadRepairVerbHandler implements IVerbHandler<RowMutation>
{
RowMutation rm = message.payload;
rm.apply();
- WriteResponse response = new WriteResponse(rm.getTable(), rm.key(), true);
+ WriteResponse response = new WriteResponse();
MessagingService.instance().sendReply(response.createMessage(), id, message.from);
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fd2ddb5c/src/java/org/apache/cassandra/db/RowMutationVerbHandler.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/RowMutationVerbHandler.java b/src/java/org/apache/cassandra/db/RowMutationVerbHandler.java
index 2c160da..fad83bc 100644
--- a/src/java/org/apache/cassandra/db/RowMutationVerbHandler.java
+++ b/src/java/org/apache/cassandra/db/RowMutationVerbHandler.java
@@ -54,7 +54,7 @@ public class RowMutationVerbHandler implements IVerbHandler<RowMutation>
}
rm.apply();
- WriteResponse response = new WriteResponse(rm.getTable(), rm.key(), true);
+ WriteResponse response = new WriteResponse();
if (logger.isDebugEnabled())
logger.debug(rm + " applied. Sending response to " + id + "@" + replyTo);
MessagingService.instance().sendReply(response.createMessage(), id, replyTo);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fd2ddb5c/src/java/org/apache/cassandra/db/WriteResponse.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/WriteResponse.java b/src/java/org/apache/cassandra/db/WriteResponse.java
index 0443bad..9a36f67 100644
--- a/src/java/org/apache/cassandra/db/WriteResponse.java
+++ b/src/java/org/apache/cassandra/db/WriteResponse.java
@@ -42,57 +42,35 @@ public class WriteResponse
return new MessageOut<WriteResponse>(MessagingService.Verb.REQUEST_RESPONSE, this, serializer);
}
- private final String table;
- private final ByteBuffer key;
- private final boolean status;
-
- public WriteResponse(String table, ByteBuffer key, boolean bVal)
- {
- this.table = table;
- this.key = key;
- this.status = bVal;
- }
-
- public String table()
- {
- return table;
- }
-
- public ByteBuffer key()
- {
- return key;
- }
-
- public boolean isSuccess()
- {
- return status;
- }
-
public static class WriteResponseSerializer implements IVersionedSerializer<WriteResponse>
{
public void serialize(WriteResponse wm, DataOutput dos, int version) throws IOException
{
- dos.writeUTF(wm.table());
- ByteBufferUtil.writeWithShortLength(wm.key(), dos);
- dos.writeBoolean(wm.isSuccess());
+ if (version < MessagingService.VERSION_12)
+ {
+ dos.writeUTF("");
+ ByteBufferUtil.writeWithShortLength(ByteBufferUtil.EMPTY_BYTE_BUFFER, dos);
+ dos.writeBoolean(true);
+ }
}
public WriteResponse deserialize(DataInput dis, int version) throws IOException
{
- String table = dis.readUTF();
- ByteBuffer key = ByteBufferUtil.readWithShortLength(dis);
- boolean status = dis.readBoolean();
- return new WriteResponse(table, key, status);
+ if (version < MessagingService.VERSION_12)
+ {
+ dis.readUTF();
+ ByteBufferUtil.readWithShortLength(dis);
+ dis.readBoolean();
+ }
+ return new WriteResponse();
}
public long serializedSize(WriteResponse response, int version)
{
TypeSizes sizes = TypeSizes.NATIVE;
- int keySize = response.key().remaining();
- int size = sizes.sizeof(response.table());
- size += sizes.sizeof((short) keySize) + keySize;
- size += sizes.sizeof(response.isSuccess());
- return size;
+ if (version < MessagingService.VERSION_12)
+ return sizes.sizeof("") + sizes.sizeof((short) 0) + sizes.sizeof(true);
+ return 0;
}
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fd2ddb5c/test/unit/org/apache/cassandra/db/SerializationsTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/SerializationsTest.java b/test/unit/org/apache/cassandra/db/SerializationsTest.java
index 0ad21ed..acfdf4b 100644
--- a/test/unit/org/apache/cassandra/db/SerializationsTest.java
+++ b/test/unit/org/apache/cassandra/db/SerializationsTest.java
@@ -308,8 +308,8 @@ public class SerializationsTest extends AbstractSerializationsTester
private void testWriteResponseWrite() throws IOException
{
- WriteResponse aff = new WriteResponse(Statics.KS, Statics.Key, true);
- WriteResponse neg = new WriteResponse(Statics.KS, Statics.Key, false);
+ WriteResponse aff = new WriteResponse();
+ WriteResponse neg = new WriteResponse();
DataOutputStream out = getOutput("db.WriteResponse.bin");
WriteResponse.serializer.serialize(aff, out, getVersion());
WriteResponse.serializer.serialize(neg, out, getVersion());