Author: jbellis Date: Fri Oct 21 16:36:41 2011 New Revision: 1187456 URL: http://svn.apache.org/viewvc?rev=1187456&view=rev Log: CompactionManager is now responsible for checking for new candidates post-task execution patch by jbellis; reviewed by slebresne for CASSANDRA-3363
Modified: cassandra/branches/cassandra-1.0/CHANGES.txt cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/CompactionManager.java cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/CompactionTask.java cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java Modified: cassandra/branches/cassandra-1.0/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/CHANGES.txt?rev=1187456&r1=1187455&r2=1187456&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0/CHANGES.txt (original) +++ cassandra/branches/cassandra-1.0/CHANGES.txt Fri Oct 21 16:36:41 2011 @@ -18,6 +18,9 @@ * optimize UUIDGen to avoid lock contention on InetAddress.getLocalHost (CASSANDRA-3387) * tolerate index being dropped mid-mutation (CASSANDRA-3334, 3313) + * CompactionManager is now responsible for checking for new candidates + post-task execution, enabling more consistent leveled compaction + (CASSANDRA-3391) 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/CompactionManager.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/CompactionManager.java?rev=1187456&r1=1187455&r2=1187456&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/CompactionManager.java (original) +++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/CompactionManager.java Fri Oct 21 16:36:41 2011 @@ -121,7 +121,8 @@ public class CompactionManager implement return 0; AbstractCompactionStrategy strategy = cfs.getCompactionStrategy(); - for (AbstractCompactionTask task : strategy.getBackgroundTasks(getDefaultGcBefore(cfs))) + List<AbstractCompactionTask> tasks = strategy.getBackgroundTasks(getDefaultGcBefore(cfs)); + for (AbstractCompactionTask task : tasks) { if (!task.markSSTablesForCompaction()) continue; @@ -135,6 +136,10 @@ public class CompactionManager implement task.unmarkSSTables(); } } + + // newly created sstables might have made other compactions eligible + if (!tasks.isEmpty()) + submitBackground(cfs); } finally { Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/CompactionTask.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/CompactionTask.java?rev=1187456&r1=1187455&r2=1187456&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/CompactionTask.java (original) +++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/CompactionTask.java Fri Oct 21 16:36:41 2011 @@ -198,8 +198,6 @@ public class CompactionTask extends Abst key.cacheKey(entry.getKey(), entry.getValue()); } - CompactionManager.instance.submitBackground(cfs); - long dTime = System.currentTimeMillis() - startTime; long startsize = SSTable.getTotalBytes(toCompact); long endsize = SSTable.getTotalBytes(sstables); Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java?rev=1187456&r1=1187455&r2=1187456&view=diff ============================================================================== --- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java (original) +++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java Fri Oct 21 16:36:41 2011 @@ -78,16 +78,6 @@ public class LeveledCompactionStrategy e // override min/max for this strategy cfs.setMaximumCompactionThreshold(Integer.MAX_VALUE); cfs.setMinimumCompactionThreshold(1); - - // TODO this is redundant wrt the kickoff in AbstractCompactionStrategy, once CASSANDRA-X is done - Runnable runnable = new Runnable() - { - public void run() - { - CompactionManager.instance.submitBackground(LeveledCompactionStrategy.this.cfs); - } - }; - StorageService.optionalTasks.scheduleAtFixedRate(runnable, 5 * 60, 5, TimeUnit.SECONDS); } public void shutdown()