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
{