cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From goffi...@apache.org
Subject svn commit: r1129462 - /cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
Date Tue, 31 May 2011 02:08:39 GMT
Author: goffinet
Date: Tue May 31 02:08:39 2011
New Revision: 1129462

URL: http://svn.apache.org/viewvc?rev=1129462&view=rev
Log:
Fixed rows being cached if they do not exist.
patch by goffinet; reviewed by stuhood for CASSANDRA-2723

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

Modified: cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1129462&r1=1129461&r2=1129462&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
(original)
+++ cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
Tue May 31 02:08:39 2011
@@ -1186,7 +1186,10 @@ public class ColumnFamilyStore implement
             if (rowCache.getCapacity() == 0)
             {
                 ColumnFamily cf = getTopLevelColumns(filter, gcBefore);
-                         
+
+                if (cf == null)
+                    return null;
+
                 // TODO this is necessary because when we collate supercolumns together,
we don't check
                 // their subcolumns for relevance, so we need to do a second prune post facto
here.
                 return cf.isSuper() ? removeDeleted(cf, gcBefore) : removeDeletedCF(cf, gcBefore);
@@ -1297,14 +1300,17 @@ public class ColumnFamilyStore implement
             recentSSTablesPerRead.add(sstablesToIterate);
             sstablesPerRead.add(sstablesToIterate);
 
+            // we need to distinguish between "there is no data at all for this row" (BF
will let us rebuild that efficiently)
+            // and "there used to be data, but it's gone now" (we should cache the empty
CF so we don't need to rebuild that slower)
+            if (iterators.size() == 0)
+                return null;
+
             Comparator<IColumn> comparator = filter.filter.getColumnComparator(getComparator());
             Iterator collated = IteratorUtils.collatedIterator(comparator, iterators);
 
             filter.collectCollatedColumns(returnCF, collated, gcBefore);
 
             // Caller is responsible for final removeDeletedCF.  This is important for cacheRow
to work correctly:
-            // we need to distinguish between "there is no data at all for this row" (BF
will let us rebuild that efficiently)
-            // and "there used to be data, but it's gone now" (we should cache the empty
CF so we don't need to rebuild that slower)
             return returnCF;
         }
         finally



Mime
View raw message