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:42:30 UTC

svn commit: r1090866 - in /cassandra/trunk: CHANGES.txt src/java/org/apache/cassandra/io/CompactionController.java src/java/org/apache/cassandra/io/CompactionIterator.java

Author: slebresne
Date: Sun Apr 10 18:42:30 2011
New Revision: 1090866

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

Modified:
    cassandra/trunk/CHANGES.txt
    cassandra/trunk/src/java/org/apache/cassandra/io/CompactionController.java
    cassandra/trunk/src/java/org/apache/cassandra/io/CompactionIterator.java

Modified: cassandra/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1090866&r1=1090865&r2=1090866&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Sun Apr 10 18:42:30 2011
@@ -16,6 +16,7 @@
  * Fix clustertool to not throw exception when calling get_endpoints (CASSANDRA-2437)
  * upgrade to thrift 0.6 (CASSANDRA-2412) 
  * repair works on a token range instead of full ring (CASSANDRA-2324)
+ * purge tombstone from row cache (CASSANDRA-2305)
 
 
 0.7.5

Modified: cassandra/trunk/src/java/org/apache/cassandra/io/CompactionController.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/CompactionController.java?rev=1090866&r1=1090865&r2=1090866&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/CompactionController.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/CompactionController.java Sun Apr 10 18:42:30 2011
@@ -24,8 +24,9 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.cassandra.db.DecoratedKey;
+import org.apache.cassandra.db.ColumnFamily;
 import org.apache.cassandra.db.ColumnFamilyStore;
+import org.apache.cassandra.db.DecoratedKey;
 import org.apache.cassandra.io.sstable.SSTableReader;
 
 /**
@@ -82,4 +83,15 @@ public class CompactionController
         if (cfs != null)
             cfs.invalidateCachedRow(key);
     }
+
+    public void removeDeletedInCache(DecoratedKey key)
+    {
+        if (cfs != null)
+        {
+            ColumnFamily cachedRow = cfs.getRawCachedRow(key);
+            if (cachedRow != null)
+                ColumnFamilyStore.removeDeleted(cachedRow, gcBefore);
+        }
+    }
+
 }

Modified: cassandra/trunk/src/java/org/apache/cassandra/io/CompactionIterator.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/CompactionIterator.java?rev=1090866&r1=1090865&r2=1090866&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/CompactionIterator.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/CompactionIterator.java Sun Apr 10 18:42:30 2011
@@ -34,6 +34,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;
@@ -110,10 +111,13 @@ implements Closeable, ICompactionInfo
                 controller.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
+            controller.removeDeletedInCache(compactedRow.key);
+
+            return compactedRow;
         }
         finally
         {