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