Author: jbellis
Date: Fri Jun 25 17:39:44 2010
New Revision: 958047
URL: http://svn.apache.org/viewvc?rev=958047&view=rev
Log:
only flush + compact hints CF if we actually replayed anything. patch by
jbellis
Modified:
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/db/HintedHandOffManager.java
Modified:
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/db/HintedHandOffManager.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/db/HintedHandOffManager.java?rev=958047&r1=958046&r2=958047&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/db/HintedHandOffManager.java
(original)
+++
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/db/HintedHandOffManager.java
Fri Jun 25 17:39:44 2010
@@ -154,6 +154,7 @@ public class HintedHandOffManager
// 3. Delete that recipient from the key if write was successful
// 4. Now force a flush
// 5. Do major compaction to clean up all deletes etc.
+ int rowsReplayed = 0;
ColumnFamilyStore hintStore =
Table.open(Table.SYSTEM_TABLE).getColumnFamilyStore(HINTS_CF);
for (String tableName : DatabaseDescriptor.getTables())
{
@@ -174,6 +175,7 @@ public class HintedHandOffManager
{
if (Arrays.equals(hintEndPoint.name(), targetEPBytes)
&& sendMessage(endPoint, tableName, keyStr))
{
+ rowsReplayed++;
if (endpoints.size() == 1)
deleteHintKey(tableName, keyColumn.name());
else
@@ -186,17 +188,22 @@ public class HintedHandOffManager
}
}
}
- hintStore.forceFlush();
- try
- {
- CompactionManager.instance.submitMajor(hintStore, 0,
Integer.MAX_VALUE).get();
- }
- catch (Exception e)
+
+ if (rowsReplayed > 0)
{
- throw new RuntimeException(e);
+ hintStore.forceFlush();
+ try
+ {
+ CompactionManager.instance.submitMajor(hintStore, 0,
Integer.MAX_VALUE).get();
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e);
+ }
}
- logger_.info("Finished hinted handoff for endpoint " + endPoint);
+ logger_.info(String.format("Finished hinted handoff of %s rows to
endpoint %s",
+ rowsReplayed, endPoint));
}
/*