You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/06/29 03:26:03 UTC

svn commit: r1140935 - in /cassandra/trunk: CHANGES.txt src/java/org/apache/cassandra/db/ColumnFamilyStore.java src/java/org/apache/cassandra/db/Memtable.java

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();
         }