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 2011/10/31 23:01:01 UTC

svn commit: r1195695 - in /cassandra/branches/cassandra-0.8: CHANGES.txt src/java/org/apache/cassandra/db/compaction/CompactionManager.java

Author: jbellis
Date: Mon Oct 31 22:01:00 2011
New Revision: 1195695

URL: http://svn.apache.org/viewvc?rev=1195695&view=rev
Log:
acquire compactionlock during truncate
patch by jbellis; reviewed by slebresne for CASSANDRA-3399

Modified:
    cassandra/branches/cassandra-0.8/CHANGES.txt
    cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/compaction/CompactionManager.java

Modified: cassandra/branches/cassandra-0.8/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1195695&r1=1195694&r2=1195695&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.8/CHANGES.txt Mon Oct 31 22:01:00 2011
@@ -1,3 +1,7 @@
+0.8.9
+ * acquire compactionlock during truncate (CASSANDRA-3399)
+
+
 0.8.8
  * fix truncate allowing data to be replayed post-restart (CASSANDRA-3297)
  * make iwriter final in IndexWriter to avoid NPE (CASSANDRA-2863)

Modified: cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/compaction/CompactionManager.java?rev=1195695&r1=1195694&r2=1195695&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/compaction/CompactionManager.java (original)
+++ cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/compaction/CompactionManager.java Mon Oct 31 22:01:00 2011
@@ -1169,15 +1169,23 @@ public class CompactionManager implement
         {
             public void runMayThrow() throws InterruptedException, IOException
             {
-                for (ColumnFamilyStore cfs : main.concatWithIndexes())
+                compactionLock.writeLock().lock();
+                try
                 {
-                    List<SSTableReader> truncatedSSTables = new ArrayList<SSTableReader>();
-                    for (SSTableReader sstable : cfs.getSSTables())
+                    for (ColumnFamilyStore cfs : main.concatWithIndexes())
                     {
-                        if (!sstable.newSince(truncatedAt))
-                            truncatedSSTables.add(sstable);
+                        List<SSTableReader> truncatedSSTables = new ArrayList<SSTableReader>();
+                        for (SSTableReader sstable : cfs.getSSTables())
+                        {
+                            if (!sstable.newSince(truncatedAt))
+                                truncatedSSTables.add(sstable);
+                        }
+                        cfs.markCompacted(truncatedSSTables);
                     }
-                    cfs.markCompacted(truncatedSSTables);
+                }
+                finally
+                {
+                    compactionLock.writeLock().unlock();
                 }
 
                 main.invalidateRowCache();