Author: jbellis
Date: Wed Dec 23 20:11:07 2009
New Revision: 893619
URL: http://svn.apache.org/viewvc?rev=893619&view=rev
Log:
avoid unnecessarily serializations of RowMutations from both CommitLog and
RowMutationVerbHandlers. patch by gdusbabek and jbellis; reviewed by goffinet
for CASSANDRA-652
Modified:
incubator/cassandra/branches/cassandra-0.5/CHANGES.txt
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/CommitLog.java
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/RowMutation.java
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/RowMutationVerbHandler.java
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/Table.java
Modified: incubator/cassandra/branches/cassandra-0.5/CHANGES.txt
URL:
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/CHANGES.txt?rev=893619&r1=893618&r2=893619&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.5/CHANGES.txt (original)
+++ incubator/cassandra/branches/cassandra-0.5/CHANGES.txt Wed Dec 23 20:11:07
2009
@@ -16,6 +16,8 @@
* fix bug determining closest neighbor for use in multiple datacenters
(CASSANDRA-648)
* Vast improvements in anticompaction speed (CASSANDRA-607)
+ * Speed up log replay and writes by avoiding redundant serializations
+ (CASSANDRA-652)
0.5.0 beta 2
Modified:
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/CommitLog.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/CommitLog.java?rev=893619&r1=893618&r2=893619&view=diff
==============================================================================
---
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/CommitLog.java
(original)
+++
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/CommitLog.java
Wed Dec 23 20:11:07 2009
@@ -358,7 +358,7 @@
{
try
{
- rm.apply(false);
+ Table.open(rm.getTable()).apply(rm, null,
false);
}
catch (IOException e)
{
@@ -453,7 +453,7 @@
* of any problems. This way we can assume that the subsequent commit log
* entry will override the garbage left over by the previous write.
*/
- void add(RowMutation rowMutation, DataOutputBuffer serializedRow) throws
IOException
+ void add(RowMutation rowMutation, Object serializedRow) throws IOException
{
Callable<CommitLogContext> task = new LogRecordAdder(rowMutation,
serializedRow);
@@ -621,7 +621,7 @@
final RowMutation rowMutation;
final Object serializedRow;
- LogRecordAdder(RowMutation rm, DataOutputBuffer serializedRow)
+ LogRecordAdder(RowMutation rm, Object serializedRow)
{
this.rowMutation = rm;
this.serializedRow = serializedRow;
Modified:
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/RowMutation.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/RowMutation.java?rev=893619&r1=893618&r2=893619&view=diff
==============================================================================
---
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/RowMutation.java
(original)
+++
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/RowMutation.java
Wed Dec 23 20:11:07 2009
@@ -200,12 +200,7 @@
*/
public void apply() throws IOException
{
- apply(true);
- }
-
- public void apply(boolean writeCommitLog) throws IOException
- {
- Table.open(table_).apply(this, this.getSerializedBuffer(),
writeCommitLog);
+ Table.open(table_).apply(this, getSerializedBuffer(), true);
}
/*
Modified:
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/RowMutationVerbHandler.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/RowMutationVerbHandler.java?rev=893619&r1=893618&r2=893619&view=diff
==============================================================================
---
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/RowMutationVerbHandler.java
(original)
+++
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/RowMutationVerbHandler.java
Wed Dec 23 20:11:07 2009
@@ -58,6 +58,7 @@
hintedMutation.apply();
}
+ Table.open(rm.getTable()).apply(rm, bytes, true);
rm.apply();
WriteResponse response = new WriteResponse(rm.getTable(),
rm.key(), true);
Modified:
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/Table.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/Table.java?rev=893619&r1=893618&r2=893619&view=diff
==============================================================================
---
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/Table.java
(original)
+++
incubator/cassandra/branches/cassandra-0.5/src/java/org/apache/cassandra/db/Table.java
Wed Dec 23 20:11:07 2009
@@ -428,7 +428,7 @@
* Once this happens the data associated with the individual column
families
* is also written to the column family store's memtable.
*/
- void apply(RowMutation mutation, DataOutputBuffer serializedMutation,
boolean writeCommitLog) throws IOException
+ void apply(RowMutation mutation, Object serializedMutation, boolean
writeCommitLog) throws IOException
{
HashMap<ColumnFamilyStore,Memtable> memtablesToFlush = new
HashMap<ColumnFamilyStore, Memtable>(2);