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;
}