Fix cleanup not deleting index entries
patch by jbellis; reviewed by slebresne for CASSANDRA-4379


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8a3bb80e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8a3bb80e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8a3bb80e

Branch: refs/heads/cassandra-1.1
Commit: 8a3bb80e0dfff6bfc0fba195a38baf9be7d443ca
Parents: 54c647f
Author: Jonathan Ellis <[email protected]>
Authored: Wed Jun 27 11:40:05 2012 -0500
Committer: Jonathan Ellis <[email protected]>
Committed: Wed Jun 27 11:40:05 2012 -0500

----------------------------------------------------------------------
 CHANGES.txt                                        |    1 +
 .../cassandra/db/compaction/CompactionManager.java |    8 +++++---
 2 files changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/8a3bb80e/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 47f21b8..8918dee 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 1.1.2
+ * Fix cleanup not deleting index entries (CASSANDRA-4379)
  * Use correct partitioner when saving + loading caches (CASSANDRA-4331)
  * Check schema before trying to export sstable (CASSANDRA-2760)
  * Raise a meaningful exception instead of NPE when PFS encounters

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8a3bb80e/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java 
b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index 46aaa7d..fb5b253 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -683,16 +683,19 @@ public class CompactionManager implements 
CompactionManagerMBean
         assert !cfs.isIndex();
         Table table = cfs.table;
         Collection<Range<Token>> ranges = 
StorageService.instance.getLocalRanges(table.name);
-        boolean isCommutative = 
cfs.metadata.getDefaultValidator().isCommutative();
         if (ranges.isEmpty())
         {
             logger.info("Cleanup cannot run before a node has joined the 
ring");
             return;
         }
 
+        boolean isCommutative = 
cfs.metadata.getDefaultValidator().isCommutative();
+        Collection<ByteBuffer> indexedColumns = 
cfs.indexManager.getIndexedColumns();
+
         for (SSTableReader sstable : sstables)
         {
-            if (!new Bounds<Token>(sstable.first.token, 
sstable.last.token).intersects(ranges))
+            if (indexedColumns.isEmpty()
+                && !new Bounds<Token>(sstable.first.token, 
sstable.last.token).intersects(ranges))
             {
                 cfs.replaceCompactedSSTables(Arrays.asList(sstable), 
Collections.<SSTableReader>emptyList(), OperationType.CLEANUP);
                 continue;
@@ -720,7 +723,6 @@ public class CompactionManager implements 
CompactionManagerMBean
 
             SSTableScanner scanner = sstable.getDirectScanner();
             long rowsRead = 0;
-            Collection<ByteBuffer> indexedColumns = 
cfs.indexManager.getIndexedColumns();
             List<IColumn> indexedColumnsInRow = null;
 
             CleanupInfo ci = new CleanupInfo(sstable, scanner);

Reply via email to