Author: jbellis Date: Wed Jun 29 01:28:22 2011 New Revision: 1140938 URL: http://svn.apache.org/viewvc?rev=1140938&view=rev Log: use aaron's improved 2589 comment
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java 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=1140938&r1=1140937&r2=1140938&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:28:22 2011 @@ -236,7 +236,10 @@ public class Memtable ColumnFamily cf = entry.getValue(); if (cf.isMarkedForDelete()) { - // don't bother persisting data shadowed by a row tombstone + // Pedantically, you could purge column level tombstones that are past GcGRace when writing to the SSTable. + // But it can result in unexpected behaviour where deletes never make it to disk, + // as they are lost and so cannot override existing column values. So we only remove deleted columns if there + // is a CF level tombstone to ensure the delete makes it into an SSTable. ColumnFamilyStore.removeDeletedColumnsOnly(cf, Integer.MIN_VALUE); } writer.append(entry.getKey(), cf);