fix incorrect hasIrrelevantData result for live CF; patch by yukim, reviewed by 
jbellis/slebresne for CASSANDRA-3855


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

Branch: refs/heads/cassandra-1.1
Commit: d74103735126658d64cb92a16f4bb40f63d5e2e8
Parents: 2b62df2
Author: Yuki Morishita <yu...@apache.org>
Authored: Fri Jul 20 17:33:05 2012 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Fri Jul 20 17:33:05 2012 -0500

----------------------------------------------------------------------
 .../cassandra/db/AbstractColumnContainer.java      |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/d7410373/src/java/org/apache/cassandra/db/AbstractColumnContainer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/AbstractColumnContainer.java 
b/src/java/org/apache/cassandra/db/AbstractColumnContainer.java
index f58f6ab..2c86070 100644
--- a/src/java/org/apache/cassandra/db/AbstractColumnContainer.java
+++ b/src/java/org/apache/cassandra/db/AbstractColumnContainer.java
@@ -197,12 +197,13 @@ public abstract class AbstractColumnContainer implements 
IColumnContainer, IIter
 
     public boolean hasIrrelevantData(int gcBefore)
     {
-        if (deletionInfo().purge(gcBefore) == DeletionInfo.LIVE)
+        // Do we have gcable deletion infos?
+        if (!deletionInfo().purge(gcBefore).equals(deletionInfo()))
             return true;
 
-        long deletedAt = deletionInfo().maxTimestamp();
+        // Do we have colums that are either deleted by the container or 
gcable tombstone?
         for (IColumn column : columns)
-            if (column.mostRecentLiveChangeAt() <= deletedAt || 
column.hasIrrelevantData(gcBefore))
+            if (deletionInfo().isDeleted(column) || 
column.hasIrrelevantData(gcBefore))
                 return true;
 
         return false;

Reply via email to