Author: slebresne
Date: Thu Oct 27 16:05:04 2011
New Revision: 1189822

URL: http://svn.apache.org/viewvc?rev=1189822&view=rev
Log:
patch by slebresne; reviewed by jbellis for CASSANDRA-3408

Modified:
    cassandra/branches/cassandra-1.0/CHANGES.txt
    
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/AbstractCompactionTask.java
    
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/LeveledCompactionTask.java

Modified: cassandra/branches/cassandra-1.0/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/CHANGES.txt?rev=1189822&r1=1189821&r2=1189822&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/CHANGES.txt (original)
+++ cassandra/branches/cassandra-1.0/CHANGES.txt Thu Oct 27 16:05:04 2011
@@ -26,6 +26,7 @@
    (CASSANDRA-2997)
  * Break bloom filters up to avoid heap fragmentation (CASSANDRA-2466)
  * fix cassandra hanging on jsvc stop (CASSANDRA-3302)
+ * Avoid leveled compaction getting blocked on errors (CASSANDRA-3408)
 Merged from 0.8:
  * (CQL) update grammar to require key clause in DELETE statement
    (CASSANDRA-3349)

Modified: 
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/AbstractCompactionTask.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/AbstractCompactionTask.java?rev=1189822&r1=1189821&r2=1189822&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/AbstractCompactionTask.java
 (original)
+++ 
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/AbstractCompactionTask.java
 Thu Oct 27 16:05:04 2011
@@ -67,7 +67,10 @@ public abstract class AbstractCompaction
         Set<SSTableReader> marked = 
cfs.getDataTracker().markCompacting(sstables, min, max);
 
         if (marked == null || marked.isEmpty())
+        {
+            cancel();
             return false;
+        }
 
         this.sstables = marked;
         return true;
@@ -77,4 +80,8 @@ public abstract class AbstractCompaction
     {
         cfs.getDataTracker().unmarkCompacting(sstables);
     }
+
+    // Can be overriden for action that need to be performed if the task won't
+    // execute (if sstable can't be marked successfully)
+    protected void cancel() {}
 }

Modified: 
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/LeveledCompactionTask.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/LeveledCompactionTask.java?rev=1189822&r1=1189821&r2=1189822&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/LeveledCompactionTask.java
 (original)
+++ 
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/LeveledCompactionTask.java
 Thu Oct 27 16:05:04 2011
@@ -52,9 +52,15 @@ public class LeveledCompactionTask exten
     @Override
     public int execute(CompactionManager.CompactionExecutorStatsCollector 
collector) throws IOException
     {
-        int n = super.execute(collector);
-        latch.countDown();
-        return n;
+        try
+        {
+            int n = super.execute(collector);
+            return n;
+        }
+        finally
+        {
+            latch.countDown();
+        }
     }
 
     public boolean isDone()
@@ -79,4 +85,10 @@ public class LeveledCompactionTask exten
     {
         return false;
     }
+
+    @Override
+    protected void cancel()
+    {
+        latch.countDown();
+    }
 }


Reply via email to