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 2012/07/02 10:14:10 UTC

[5/10] git commit: allow dropping columns shadowed by not-yet-expired supercolumn or row tombstones in PrecompactedRow patch by jbellis; reviewed by slebresne for CASSANDRA-4396

allow dropping columns shadowed by not-yet-expired supercolumn or row tombstones in PrecompactedRow
patch by jbellis; reviewed by slebresne for CASSANDRA-4396


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

Branch: refs/heads/cassandra-1.0
Commit: 5bcfcbc3ed1bbaadcd0f6e373d0d207db38ec6c2
Parents: 5aad64a
Author: Jonathan Ellis <jb...@apache.org>
Authored: Mon Jul 2 02:56:03 2012 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Mon Jul 2 03:00:06 2012 -0500

----------------------------------------------------------------------
 CHANGES.txt                                        |    2 ++
 .../cassandra/db/AbstractColumnContainer.java      |    4 ++--
 src/java/org/apache/cassandra/db/Column.java       |    2 +-
 src/java/org/apache/cassandra/db/IColumn.java      |    2 +-
 .../org/apache/cassandra/db/IColumnContainer.java  |    2 +-
 .../cassandra/db/compaction/PrecompactedRow.java   |    2 +-
 6 files changed, 8 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bcfcbc3/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 1fe21aa..c752244 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
 1.0.11
+ * allow dropping columns shadowed by not-yet-expired supercolumn or row
+   tombstones in PrecompactedRow (CASSANDRA-4396)
  * synchronize LCS getEstimatedTasks to avoid CME (CASSANDRA-4255)
  * ensure unique streaming session id's (CASSANDRA-4223)
  * kick off background compaction when min/max thresholds change 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bcfcbc3/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 87e75eb..af8a010 100644
--- a/src/java/org/apache/cassandra/db/AbstractColumnContainer.java
+++ b/src/java/org/apache/cassandra/db/AbstractColumnContainer.java
@@ -251,13 +251,13 @@ public abstract class AbstractColumnContainer implements IColumnContainer, IIter
         }
     }
 
-    public boolean hasExpiredTombstones(int gcBefore)
+    public boolean hasIrrelevantData(int gcBefore)
     {
         if (isMarkedForDelete() && getLocalDeletionTime() < gcBefore)
             return true;
 
         for (IColumn column : columns)
-            if (column.hasExpiredTombstones(gcBefore))
+            if (column.mostRecentLiveChangeAt() < getLocalDeletionTime() || column.hasIrrelevantData(gcBefore))
                 return true;
 
         return false;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bcfcbc3/src/java/org/apache/cassandra/db/Column.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Column.java b/src/java/org/apache/cassandra/db/Column.java
index a7cd39f..072bfde 100644
--- a/src/java/org/apache/cassandra/db/Column.java
+++ b/src/java/org/apache/cassandra/db/Column.java
@@ -281,7 +281,7 @@ public class Column implements IColumn
             valueValidator.validate(value());
     }
 
-    public boolean hasExpiredTombstones(int gcBefore)
+    public boolean hasIrrelevantData(int gcBefore)
     {
         return isMarkedForDelete() && getLocalDeletionTime() < gcBefore;
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bcfcbc3/src/java/org/apache/cassandra/db/IColumn.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/IColumn.java b/src/java/org/apache/cassandra/db/IColumn.java
index fe6e949..cefc12c 100644
--- a/src/java/org/apache/cassandra/db/IColumn.java
+++ b/src/java/org/apache/cassandra/db/IColumn.java
@@ -75,7 +75,7 @@ public interface IColumn
     /**
      * @return true if the column or any its subcolumns expired before @param gcBefore
      */
-    public boolean hasExpiredTombstones(int gcBefore);
+    public boolean hasIrrelevantData(int gcBefore);
 
     /**
      * For a standard column, this is the same as timestamp().

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bcfcbc3/src/java/org/apache/cassandra/db/IColumnContainer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/IColumnContainer.java b/src/java/org/apache/cassandra/db/IColumnContainer.java
index b300706..3259fdd 100644
--- a/src/java/org/apache/cassandra/db/IColumnContainer.java
+++ b/src/java/org/apache/cassandra/db/IColumnContainer.java
@@ -44,7 +44,7 @@ public interface IColumnContainer
 
     public boolean isMarkedForDelete();
     public long getMarkedForDeleteAt();
-    public boolean hasExpiredTombstones(int gcBefore);
+    public boolean hasIrrelevantData(int gcBefore);
 
     public AbstractType getComparator();
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bcfcbc3/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java b/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java
index 5b5ba8d..aced6d9 100644
--- a/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java
+++ b/src/java/org/apache/cassandra/db/compaction/PrecompactedRow.java
@@ -67,7 +67,7 @@ public class PrecompactedRow extends AbstractCompactedRow
         // taking this into account.
         Boolean shouldPurge = null;
 
-        if (cf.hasExpiredTombstones(controller.gcBefore))
+        if (cf.hasIrrelevantData(controller.gcBefore))
             shouldPurge = controller.shouldPurge(key);
         ColumnFamily compacted = shouldPurge != null && shouldPurge
                                ? ColumnFamilyStore.removeDeleted(cf, controller.gcBefore)