You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2011/04/10 20:49:54 UTC

svn commit: r1090867 - /cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/CompactionIterator.java

Author: slebresne
Date: Sun Apr 10 18:49:54 2011
New Revision: 1090867

URL: http://svn.apache.org/viewvc?rev=1090867&view=rev
Log:
Purge tombstone from row cache (0.7 version)
patch by slebresne; reviewed by jbellis for CASSANDRA-2305

Modified:
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/CompactionIterator.java

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/CompactionIterator.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/CompactionIterator.java?rev=1090867&r1=1090866&r2=1090867&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/CompactionIterator.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/CompactionIterator.java Sun Apr 10 18:49:54 2011
@@ -32,6 +32,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.cassandra.config.DatabaseDescriptor;
+import org.apache.cassandra.db.ColumnFamily;
 import org.apache.cassandra.db.ColumnFamilyStore;
 import org.apache.cassandra.io.sstable.SSTableIdentityIterator;
 import org.apache.cassandra.io.sstable.SSTableReader;
@@ -112,10 +113,15 @@ implements Closeable, ICompactionInfo
                 cfs.invalidateCachedRow(compactedRow.key);
                 return null;
             }
-            else
-            {
-                return compactedRow;
-            }
+
+            // If the raw is cached, we call removeDeleted on it to have/ coherent query returns. However it would look
+            // like some deleted columns lived longer than gc_grace + compaction. This can also free up big amount of
+            // memory on long running instances
+            ColumnFamily cachedRow = cfs.getRawCachedRow(compactedRow.key);
+            if (cachedRow != null)
+                ColumnFamilyStore.removeDeleted(cachedRow, gcBefore);
+
+            return compactedRow;
         }
         finally
         {