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());