Author: jbellis Date: Mon Apr 18 16:56:57 2011 New Revision: 1094647 URL: http://svn.apache.org/viewvc?rev=1094647&view=rev Log: avoid caching token-only decoratedkeys patch by jbellis; reviewed by slebresne for CASSANDRA-2416
Modified: cassandra/branches/cassandra-0.7/CHANGES.txt cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java Modified: cassandra/branches/cassandra-0.7/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/CHANGES.txt?rev=1094647&r1=1094646&r2=1094647&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/CHANGES.txt (original) +++ cassandra/branches/cassandra-0.7/CHANGES.txt Mon Apr 18 16:56:57 2011 @@ -29,6 +29,7 @@ * re-set bootstrapped flag after move finishes (CASSANDRA-2435) * use 64KB flush buffer instead of in_memory_compaction_limit (CASSANDRA-2463) * fix duplicate results from CFS.scan (CASSANDRA-2406) + * avoid caching token-only decoratedkeys (CASSANDRA-2416) 0.7.4 Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java?rev=1094647&r1=1094646&r2=1094647&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java (original) +++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java Mon Apr 18 16:56:57 2011 @@ -417,8 +417,9 @@ public class SSTableReader extends SSTab public void cacheKey(DecoratedKey key, Long info) { + assert key.key != null; // avoid keeping a permanent reference to the original key buffer - DecoratedKey copiedKey = new DecoratedKey(key.token, key.key == null ? null : ByteBufferUtil.clone(key.key)); + DecoratedKey copiedKey = new DecoratedKey(key.token, ByteBufferUtil.clone(key.key)); keyCache.put(new Pair<Descriptor, DecoratedKey>(descriptor, copiedKey), info); } @@ -487,7 +488,8 @@ public class SSTableReader extends SSTab if (op == Operator.EQ) bloomFilterTracker.addTruePositive(); // store exact match for the key - cacheKey(decoratedKey, dataPosition); + if (decoratedKey.key != null) + cacheKey(decoratedKey, dataPosition); } return dataPosition; }