Fix columns expiring in the middle of 2 phase compactions

patch by slebresne; reviewed by jbellis for CASSANDRA-5799


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

Branch: refs/heads/trunk
Commit: d38446a1bbca0abf7a2af8986fecf348355abafb
Parents: 9ae960a
Author: Sylvain Lebresne <[email protected]>
Authored: Wed Jul 24 16:43:38 2013 +0200
Committer: Sylvain Lebresne <[email protected]>
Committed: Wed Jul 24 16:43:38 2013 +0200

----------------------------------------------------------------------
 CHANGES.txt                                                        | 1 +
 src/java/org/apache/cassandra/db/DeletionTime.java                 | 2 +-
 .../org/apache/cassandra/db/compaction/LazilyCompactedRow.java     | 1 -
 3 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/d38446a1/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index da03306..aaeb10b 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -26,6 +26,7 @@
  * Don't rely on row marker for queries in general to hide lost markers
    after TTL expires (CASSANDRA-5762)
  * Sort nodetool help output (CASSANDRA-5776)
+ * Fix column expiring during 2 phases compaction (CASSANDRA-5799)
 
 
 1.2.6

http://git-wip-us.apache.org/repos/asf/cassandra/blob/d38446a1/src/java/org/apache/cassandra/db/DeletionTime.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/DeletionTime.java 
b/src/java/org/apache/cassandra/db/DeletionTime.java
index bcb1b01..deab30b 100644
--- a/src/java/org/apache/cassandra/db/DeletionTime.java
+++ b/src/java/org/apache/cassandra/db/DeletionTime.java
@@ -85,7 +85,7 @@ public class DeletionTime implements Comparable<DeletionTime>
 
     public boolean isDeleted(IColumn column)
     {
-        return column.isMarkedForDelete() && column.getMarkedForDeleteAt() <= 
markedForDeleteAt;
+        return column.mostRecentLiveChangeAt() <= markedForDeleteAt;
     }
 
     public long memorySize()

http://git-wip-us.apache.org/repos/asf/cassandra/blob/d38446a1/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java 
b/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
index 9575d41..9a03598 100644
--- a/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
+++ b/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
@@ -293,7 +293,6 @@ public class LazilyCompactedRow extends 
AbstractCompactedRow implements Iterable
 
                 // PrecompactedRow.removeDeletedAndOldShards have only checked 
the top-level CF deletion times,
                 // not the range tombstone. For that we use the columnIndexer 
tombstone tracker.
-                // Note that this doesn't work for super columns.
                 if (indexBuilder.tombstoneTracker().isDeleted(reduced))
                     return null;
 

Reply via email to