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;