Author: jbellis
Date: Wed Jun 29 01:26:02 2011
New Revision: 1140935

URL: http://svn.apache.org/viewvc?rev=1140935&view=rev
Log:
don't bother persisting columns shadowed by a row tombstone
patch by Aaron Morton; reviewed by jbellis for CASSANDRA-2589

Modified:
    cassandra/trunk/CHANGES.txt
    cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
    cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java

Modified: cassandra/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1140935&r1=1140934&r2=1140935&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Wed Jun 29 01:26:02 2011
@@ -5,9 +5,11 @@
  * make AbstractBounds.normalize de-overlapp overlapping ranges 
(CASSANDRA-2641)
  * replace CollatingIterator, ReducingIterator with MergeIterator 
    (CASSANDRA-2062)
- * Fixed the ability to set compaction strategy in cli using create column 
family command (CASSANDRA-2778)
+ * Fixed the ability to set compaction strategy in cli using create column 
+   family command (CASSANDRA-2778)
  * clean up tmp files after failed compaction (CASSANDRA-2468)
  * restrict repair streaming to specific columnfamilies (CASSANDRA-2280)
+ * don't bother persisting columns shadowed by a row tombstone (CASSANDRA-2589)
 
 
 0.8.2

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1140935&r1=1140934&r2=1140935&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Wed 
Jun 29 01:26:02 2011
@@ -795,7 +795,7 @@ public class ColumnFamilyStore implement
         return removeDeletedCF(cf, gcBefore);
     }
 
-    private static void removeDeletedColumnsOnly(ColumnFamily cf, int gcBefore)
+    public static void removeDeletedColumnsOnly(ColumnFamily cf, int gcBefore)
     {
         if (cf.isSuper())
             removeDeletedSuper(cf, gcBefore);

Modified: cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java?rev=1140935&r1=1140934&r2=1140935&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java Wed Jun 29 
01:26:02 2011
@@ -232,7 +232,15 @@ public class Memtable
             // (we can't clear out the map as-we-go to free up memory,
             //  since the memtable is being used for queries in the "pending 
flush" category)
             for (Map.Entry<DecoratedKey, ColumnFamily> entry : 
columnFamilies.entrySet())
-                writer.append(entry.getKey(), entry.getValue());
+            {
+                ColumnFamily cf = entry.getValue();
+                if (cf.isMarkedForDelete())
+                {
+                    // don't bother persisting data shadowed by a row tombstone
+                    ColumnFamilyStore.removeDeletedColumnsOnly(cf, 
Integer.MIN_VALUE);
+                }
+                writer.append(entry.getKey(), cf);
+            }
 
             ssTable = writer.closeAndOpenReader();
         }


Reply via email to