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 2011/11/23 08:23:25 UTC

svn commit: r1205312 - in /cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db: AbstractColumnContainer.java ColumnFamilyStore.java

Author: jbellis
Date: Wed Nov 23 07:23:25 2011
New Revision: 1205312

URL: http://svn.apache.org/viewvc?rev=1205312&view=rev
Log:
add javadoc for maybeResetDeletionTimes

Modified:
    cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/AbstractColumnContainer.java
    cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java

Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/AbstractColumnContainer.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/AbstractColumnContainer.java?rev=1205312&r1=1205311&r2=1205312&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/AbstractColumnContainer.java (original)
+++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/AbstractColumnContainer.java Wed Nov 23 07:23:25 2011
@@ -89,6 +89,11 @@ public abstract class AbstractColumnCont
         return columns.getComparator();
     }
 
+    /**
+     * Drops expired row-level tombstones.  Normally, these are dropped once the row no longer exists, but
+     * if new columns are inserted into the row post-deletion, they can keep the row tombstone alive indefinitely,
+     * with non-intuitive results.  See https://issues.apache.org/jira/browse/CASSANDRA-2317
+     */
     public void maybeResetDeletionTimes(int gcBefore)
     {
         while (true)
@@ -97,9 +102,11 @@ public abstract class AbstractColumnCont
             // Stop if either we don't need to change the deletion info (it's
             // still MIN_VALUE or not expired yet) or we've succesfully changed it
             if (current.localDeletionTime == Integer.MIN_VALUE
-             || current.localDeletionTime > gcBefore
-             || deletionInfo.compareAndSet(current, new DeletionInfo()))
+                || current.localDeletionTime > gcBefore
+                || deletionInfo.compareAndSet(current, new DeletionInfo()))
+            {
                 break;
+            }
         }
     }
 

Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1205312&r1=1205311&r2=1205312&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Wed Nov 23 07:23:25 2011
@@ -804,8 +804,6 @@ public class ColumnFamilyStore implement
         if (cf.getColumnCount() == 0 && cf.getLocalDeletionTime() <= gcBefore)
             return null;
 
-        // If there is non deleted columns, we still need to reset the column family
-        // deletion times since gc_grace seconds had elapsed
         cf.maybeResetDeletionTimes(gcBefore);
         return cf;
     }
@@ -882,8 +880,6 @@ public class ColumnFamilyStore implement
             }
             else
             {
-                // If there is non deleted columns, we still need to reset the column family
-                // deletion times since gc_grace seconds had elapsed
                 c.maybeResetDeletionTimes(gcBefore);
             }
         }