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


Reply via email to