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 2010/01/13 20:14:02 UTC
svn commit: r898894 - in /incubator/cassandra/trunk:
src/java/org/apache/cassandra/db/ColumnFamilyStore.java
src/java/org/apache/cassandra/db/Table.java test/system/test_server.py
Author: jbellis
Date: Wed Jan 13 19:14:02 2010
New Revision: 898894
URL: http://svn.apache.org/viewvc?rev=898894&view=rev
Log:
add missing gcBefore parameter to removeDeleted; clone SC from cache before modifying
patch by jbellis; reviewed by goffinet for CASSANDRA-689
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
incubator/cassandra/trunk/test/system/test_server.py
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=898894&r1=898893&r2=898894&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Wed Jan 13 19:14:02 2010
@@ -30,7 +30,6 @@
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
-import com.reardencommerce.kernel.collections.shared.evictable.ConcurrentLinkedHashMap;
import org.apache.cassandra.service.SliceRange;
import org.apache.log4j.Logger;
@@ -752,15 +751,15 @@
return getColumnFamily(filter, CompactionManager.getDefaultGCBefore());
}
- private ColumnFamily getCachedRow(QueryFilter filter) throws IOException
+ private ColumnFamily cacheRow(String key) throws IOException
{
ColumnFamily cached;
- if ((cached = rowCache.get(filter.key)) == null)
+ if ((cached = rowCache.get(key)) == null)
{
- cached = getTopLevelColumns(new IdentityQueryFilter(filter.key, new QueryPath(columnFamily_)), Integer.MIN_VALUE);
+ cached = getTopLevelColumns(new IdentityQueryFilter(key, new QueryPath(columnFamily_)), Integer.MIN_VALUE);
if (cached == null)
return null;
- rowCache.put(filter.key, cached);
+ rowCache.put(key, cached);
}
return cached;
}
@@ -782,11 +781,11 @@
if (rowCache == null)
return removeDeleted(getTopLevelColumns(filter, gcBefore), gcBefore);
- ColumnFamily cached = getCachedRow(filter);
+ ColumnFamily cached = cacheRow(filter.key);
ColumnIterator ci = filter.getMemColumnIterator(memtable_, cached, getComparator()); // TODO passing memtable here is confusing since it's almost entirely unused
ColumnFamily returnCF = ci.getColumnFamily();
filter.collectCollatedColumns(returnCF, ci, gcBefore);
- return removeDeleted(returnCF);
+ return removeDeleted(returnCF, gcBefore);
}
// we are querying subcolumns of a supercolumn: fetch the supercolumn with NQF, then filter in-memory.
@@ -804,12 +803,13 @@
}
else
{
- cf = getCachedRow(filter);
+ cf = cacheRow(filter.key);
if (cf == null)
return null;
sc = (SuperColumn)cf.getColumn(filter.path.superColumnName);
if (sc == null)
return null;
+ sc = (SuperColumn)sc.cloneMe();
}
SuperColumn scFiltered = filter.filterSuperColumn(sc, gcBefore);
@@ -1229,7 +1229,8 @@
return ssTables_.size();
}
- public ColumnFamily getCachedRow(String key)
+ /** raw cached row -- does not fetch the row if it is not present */
+ public ColumnFamily getRawCachedRow(String key)
{
return rowCache == null ? null : rowCache.get(key);
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java?rev=898894&r1=898893&r2=898894&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java Wed Jan 13 19:14:02 2010
@@ -33,7 +33,6 @@
import java.net.InetAddress;
-import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.*;
import org.apache.cassandra.db.filter.*;
@@ -422,7 +421,7 @@
if ((memtableToFlush=cfs.apply(mutation.key(), columnFamily)) != null)
memtablesToFlush.put(cfs, memtableToFlush);
- ColumnFamily cachedRow = cfs.getCachedRow(mutation.key());
+ ColumnFamily cachedRow = cfs.getRawCachedRow(mutation.key());
if (cachedRow != null)
cachedRow.addAll(columnFamily);
}
Modified: incubator/cassandra/trunk/test/system/test_server.py
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/system/test_server.py?rev=898894&r1=898893&r2=898894&view=diff
==============================================================================
--- incubator/cassandra/trunk/test/system/test_server.py (original)
+++ incubator/cassandra/trunk/test/system/test_server.py Wed Jan 13 19:14:02 2010
@@ -183,6 +183,8 @@
def test_missing_super(self):
_expect_missing(lambda: client.get('Keyspace1', 'key1', ColumnPath('Super1', 'sc1', _i64(1)), ConsistencyLevel.ONE))
+ _insert_super()
+ _expect_missing(lambda: client.get('Keyspace1', 'key1', ColumnPath('Super1', 'sc1', _i64(1)), ConsistencyLevel.ONE))
def test_count(self):
_insert_simple()
@@ -585,8 +587,8 @@
assert _big_slice('Keyspace1', 'key1', ColumnParent('Standard1')) == []
# Next, w/ a newer timestamp; it should come back:
client.insert('Keyspace1', 'key1', ColumnPath('Standard1', column='c1'), 'value1', 4, ConsistencyLevel.ONE)
- assert _big_slice('Keyspace1', 'key1', ColumnParent('Standard1')) == \
- [ColumnOrSuperColumn(column=Column('c1', 'value1', 4))]
+ result = _big_slice('Keyspace1', 'key1', ColumnParent('Standard1'))
+ assert result == [ColumnOrSuperColumn(column=Column('c1', 'value1', 4))], result
# check removing the entire super cf, too.
client.remove('Keyspace1', 'key1', ColumnPath('Super1'), 3, ConsistencyLevel.ONE)