Updated Branches:
  refs/heads/trunk 4f1e5e288 -> 086c06ad7

fix build - re-add CompactionController.removeDeletedInCache for commit 
fbb5ec0374e1a5f1b24680f1604b6e9201fb535f restore pre-CASSANDRA-3862 approach to 
removing expired tombstones during compaction


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

Branch: refs/heads/trunk
Commit: 086c06ad7fb211de6be877c3c1ea2ee4f86c6d7e
Parents: 4f1e5e2
Author: Dave Brosius <[email protected]>
Authored: Mon Jul 2 11:13:03 2012 -0400
Committer: Dave Brosius <[email protected]>
Committed: Mon Jul 2 11:13:03 2012 -0400

----------------------------------------------------------------------
 .../db/compaction/CompactionController.java        |   19 +++++++++++++-
 1 files changed, 17 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/086c06ad/src/java/org/apache/cassandra/db/compaction/CompactionController.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/db/compaction/CompactionController.java 
b/src/java/org/apache/cassandra/db/compaction/CompactionController.java
index 4b42ed4..90fe68d 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionController.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionController.java
@@ -20,17 +20,18 @@ package org.apache.cassandra.db.compaction;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-import java.util.Set;
 
 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.db.DataTracker;
 import org.apache.cassandra.db.DecoratedKey;
 import org.apache.cassandra.io.sstable.SSTableIdentityIterator;
 import org.apache.cassandra.io.sstable.SSTableReader;
+import org.apache.cassandra.service.CacheService;
 import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.utils.Throttle;
 
@@ -113,6 +114,20 @@ public class CompactionController
         cfs.invalidateCachedRow(key);
     }
 
+    public void removeDeletedInCache(DecoratedKey key)
+    {
+        // For the copying cache, we'd need to re-serialize the updated 
cachedRow, which would be racy
+        // vs other updates.  We'll just ignore it instead, since the next 
update to this row will invalidate it
+        // anyway, so the odds of a "tombstones consuming memory indefinitely" 
problem are minimal.
+        // See https://issues.apache.org/jira/browse/CASSANDRA-3921 for more 
discussion.
+        if (CacheService.instance.rowCache.isPutCopying())
+            return;
+
+        ColumnFamily cachedRow = cfs.getRawCachedRow(key);
+        if (cachedRow != null)
+            ColumnFamilyStore.removeDeleted(cachedRow, gcBefore);
+    }
+
     /**
      * @return an AbstractCompactedRow implementation to write the merged rows 
in question.
      *
@@ -141,7 +156,7 @@ public class CompactionController
     {
         return getCompactedRow(Collections.singletonList(row));
     }
-    
+
     public void mayThrottle(long currentBytes)
     {
         throttle.throttle(currentBytes);

Reply via email to