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 2010/06/25 19:39:45 UTC

svn commit: r958047 - /cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/db/HintedHandOffManager.java

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));
     }
 
     /*