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 2009/09/02 17:32:10 UTC

svn commit: r810570 - in /incubator/cassandra/branches/cassandra-0.4: ./ conf/ interface/gen-java/org/apache/cassandra/service/ lib/ lib/licenses/ src/java/org/ src/java/org/apache/cassandra/config/ src/java/org/apache/cassandra/db/ src/java/org/apache...

Author: jbellis
Date: Wed Sep  2 15:32:09 2009
New Revision: 810570

URL: http://svn.apache.org/viewvc?rev=810570&view=rev
Log:
merge 810540 (clru removal) from trunk (committed in wrong order. oops)

Removed:
    incubator/cassandra/branches/cassandra-0.4/lib/clhm-20090629.jar
    incubator/cassandra/branches/cassandra-0.4/lib/licenses/clhm-20090629.jar.LICENSE
Modified:
    incubator/cassandra/branches/cassandra-0.4/   (props changed)
    incubator/cassandra/branches/cassandra-0.4/CHANGES.txt
    incubator/cassandra/branches/cassandra-0.4/conf/storage-conf.xml
    incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Cassandra.java   (props changed)
    incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Column.java   (props changed)
    incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java   (props changed)
    incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/NotFoundException.java   (props changed)
    incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/SuperColumn.java   (props changed)
    incubator/cassandra/branches/cassandra-0.4/src/java/org/   (props changed)
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/BinaryMemtable.java
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/Memtable.java
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/io/SSTableReader.java
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/io/SSTableWriter.java
    incubator/cassandra/branches/cassandra-0.4/test/unit/org/   (props changed)
    incubator/cassandra/branches/cassandra-0.4/test/unit/org/apache/cassandra/io/SSTableTest.java

Propchange: incubator/cassandra/branches/cassandra-0.4/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Sep  2 15:32:09 2009
@@ -1 +1,2 @@
 /incubator/cassandra/branches/cassandra-0.3:774578-796573
+/incubator/cassandra/trunk:810540

Modified: incubator/cassandra/branches/cassandra-0.4/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/CHANGES.txt?rev=810570&r1=810569&r2=810570&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/CHANGES.txt (original)
+++ incubator/cassandra/branches/cassandra-0.4/CHANGES.txt Wed Sep  2 15:32:09 2009
@@ -6,7 +6,6 @@
  * Scan all sstables for all queries to avoid situations where
    different types of operation on the same ColumnFamily could
    disagree on what data was present
- * Configurable LRU cache for key lookups
  * Snapshot support via JMX
  * BinaryMemtable support for bulk load via hadoop; see
    https://github.com/lenn0x/Cassandra-Hadoop-BMT/tree

Modified: incubator/cassandra/branches/cassandra-0.4/conf/storage-conf.xml
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/conf/storage-conf.xml?rev=810570&r1=810569&r2=810570&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/conf/storage-conf.xml (original)
+++ incubator/cassandra/branches/cassandra-0.4/conf/storage-conf.xml Wed Sep  2 15:32:09 2009
@@ -42,17 +42,6 @@
   -->
   <Keyspaces>
     <Keyspace Name="Keyspace1">
-      <!--
-       ~ The fraction of keys per sstable whose locations we keep in
-       ~ memory in "mostly LRU" order.  (JUST the key locations, NOT any
-       ~ column values.)
-
-       ~ The amount of memory used by the default setting of 0.01 is
-       ~ comparable to the amount used by the internal per-sstable key
-       ~ index. Consider increasing this if you have fewer, wider rows.
-       ~ Set to 0 to disable entirely.
-      -->
-      <KeysCachedFraction>0.01</KeysCachedFraction>
       <!-- 
        ~ The CompareWith attribute tells Cassandra how to sort the columns
        ~ for slicing operations.  The default is BytesType, which is a

Propchange: incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Sep  2 15:32:09 2009
@@ -1,2 +1,2 @@
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573
-/incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/Cassandra.java:749219-768588
+/incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/Cassandra.java:749219-768588,810540

Propchange: incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Sep  2 15:32:09 2009
@@ -1,2 +1,3 @@
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198
+/incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/Column.java:810540
 /incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/column_t.java:749219-768588

Propchange: incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Sep  2 15:32:09 2009
@@ -1,2 +1,2 @@
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573
-/incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:749219-768588
+/incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:749219-768588,810540

Propchange: incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Sep  2 15:32:09 2009
@@ -1,2 +1,2 @@
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573
-/incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:749219-768588
+/incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:749219-768588,810540

Propchange: incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Sep  2 15:32:09 2009
@@ -1,2 +1,3 @@
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198
+/incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:810540
 /incubator/cassandra/trunk/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:749219-768588

Propchange: incubator/cassandra/branches/cassandra-0.4/src/java/org/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Sep  2 15:32:09 2009
@@ -1,2 +1,2 @@
 /incubator/cassandra/branches/cassandra-0.3/src/java/org:774578-796573
-/incubator/cassandra/trunk/src/java/org:749219-769885
+/incubator/cassandra/trunk/src/java/org:749219-769885,810540

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/config/DatabaseDescriptor.java?rev=810570&r1=810569&r2=810570&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/config/DatabaseDescriptor.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/config/DatabaseDescriptor.java Wed Sep  2 15:32:09 2009
@@ -89,7 +89,6 @@
     private static String d_columnValue_      = "COLUMN_VALUE";
     private static String d_columnTimestamp_  = "COLUMN_TIMESTAMP";
 
-    private static Map<String, Double> tableKeysCachedFractions_;
     /*
      * A map from table names to the set of column families for the table and the
      * corresponding meta data for that column family.
@@ -401,7 +400,6 @@
                 CommitLog.setSegmentSize(Integer.parseInt(value) * 1024 * 1024);
 
             tableToCFMetaDataMap_ = new HashMap<String, Map<String, CFMetaData>>();
-            tableKeysCachedFractions_ = new HashMap<String, Double>();
 
             /* See which replica placement strategy to use */
             String replicaPlacementStrategyClassName = xmlUtils.getNodeValue("/Storage/ReplicaPlacementStrategy");
@@ -438,17 +436,6 @@
                 tables_.add(tName);
                 tableToCFMetaDataMap_.put(tName, new HashMap<String, CFMetaData>());
 
-                String xqlCacheSize = "/Storage/Keyspaces/Keyspace[@Name='" + tName + "']/KeysCachedFraction";
-                value = xmlUtils.getNodeValue(xqlCacheSize);
-                if (value == null)
-                {
-                    tableKeysCachedFractions_.put(tName, 0.01);
-                }
-                else
-                {
-                    tableKeysCachedFractions_.put(tName, Double.valueOf(value));
-                }
-
                 String xqlTable = "/Storage/Keyspaces/Keyspace[@Name='" + tName + "']/";
                 NodeList columnFamilies = xmlUtils.getRequestedNodeList(xqlTable + "ColumnFamily");
 
@@ -573,7 +560,6 @@
             data.subcolumnComparator = new BytesType();
             systemMetadata.put(HintedHandOffManager.HINTS_CF, data);
             tableToCFMetaDataMap_.put(Table.SYSTEM_TABLE, systemMetadata);
-            tableKeysCachedFractions_.put(Table.SYSTEM_TABLE, 0.01);
 
             /* make sure we have a directory for each table */
             createTableDirectories();
@@ -964,11 +950,6 @@
         return tableToCFMetaDataMap_;
     }
 
-    public static double getKeysCachedFraction(String tableName)
-    {
-        return tableKeysCachedFractions_.get(tableName);
-    }
-
     private static class ConfigurationException extends Exception
     {
         public ConfigurationException(String message)

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/BinaryMemtable.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/BinaryMemtable.java?rev=810570&r1=810569&r2=810570&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/BinaryMemtable.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/BinaryMemtable.java Wed Sep  2 15:32:09 2009
@@ -175,7 +175,7 @@
                 writer.append(key, bytes);
             }
         }
-        cfStore.storeLocation(writer.closeAndOpenReader(DatabaseDescriptor.getKeysCachedFraction(table_)));
+        cfStore.storeLocation(writer.closeAndOpenReader());
         columnFamilies_.clear();       
     }
 }

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=810570&r1=810569&r2=810570&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Wed Sep  2 15:32:09 2009
@@ -1009,7 +1009,7 @@
 
         if (rangeWriter != null)
         {
-            rangeWriter.closeAndOpenReader(DatabaseDescriptor.getKeysCachedFraction(table_));
+            rangeWriter.closeAndOpenReader();
             if (fileList != null)
             {
                 //Retain order. The -Data.db file needs to be last because 
@@ -1160,7 +1160,7 @@
         if (writer != null)
         {
             // TODO if all the keys were the same nothing will be done here
-            ssTable = writer.closeAndOpenReader(DatabaseDescriptor.getKeysCachedFraction(table_));
+            ssTable = writer.closeAndOpenReader();
             newfile = writer.getFilename();
         }
         sstableLock_.writeLock().lock();

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/Memtable.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/Memtable.java?rev=810570&r1=810569&r2=810570&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/Memtable.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/db/Memtable.java Wed Sep  2 15:32:09 2009
@@ -212,7 +212,7 @@
                 writer.append(partitioner.decorateKey(key), buffer);
             }
         }
-        SSTableReader ssTable = writer.closeAndOpenReader(DatabaseDescriptor.getKeysCachedFraction(table_));
+        SSTableReader ssTable = writer.closeAndOpenReader();
         cfStore.onMemtableFlush(cLogCtx);
         cfStore.storeLocation(ssTable);
         buffer.close();

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/io/SSTableReader.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/io/SSTableReader.java?rev=810570&r1=810569&r2=810570&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/io/SSTableReader.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/io/SSTableReader.java Wed Sep  2 15:32:09 2009
@@ -31,7 +31,6 @@
 import org.apache.cassandra.db.ColumnFamily;
 import org.apache.cassandra.db.marshal.AbstractType;
 import org.cliffc.high_scale_lib.NonBlockingHashMap;
-import com.reardencommerce.kernel.collections.shared.evictable.ConcurrentLinkedHashMap;
 
 public class SSTableReader extends SSTable
 {
@@ -83,10 +82,10 @@
 
     public static synchronized SSTableReader open(String dataFileName) throws IOException
     {
-        return open(dataFileName, StorageService.getPartitioner(), DatabaseDescriptor.getKeysCachedFraction(parseTableName(dataFileName)));
+        return open(dataFileName, StorageService.getPartitioner());
     }
     
-    public static synchronized SSTableReader open(String dataFileName, IPartitioner partitioner, double cacheFraction) throws IOException
+    public static synchronized SSTableReader open(String dataFileName, IPartitioner partitioner) throws IOException
     {
         SSTableReader sstable = openedFiles.get(dataFileName);
         if (sstable == null)
@@ -97,10 +96,6 @@
             long start = System.currentTimeMillis();
             sstable.loadIndexFile();
             sstable.loadBloomFilter();
-            if (cacheFraction > 0)
-            {
-                sstable.keyCache = createKeyCache((int)((sstable.getIndexPositions().size() + 1) * INDEX_INTERVAL * cacheFraction));
-            }
             if (logger.isDebugEnabled())
                 logger.debug("INDEX LOAD TIME for "  + dataFileName + ": " + (System.currentTimeMillis() - start) + " ms.");
 
@@ -116,20 +111,11 @@
         return sstable;
     }
 
-    public static ConcurrentLinkedHashMap<String, Long> createKeyCache(int size)
-    {
-        return ConcurrentLinkedHashMap.create(ConcurrentLinkedHashMap.EvictionPolicy.SECOND_CHANCE, size);
-    }
-
-
-    private ConcurrentLinkedHashMap<String, Long> keyCache;
-
-    SSTableReader(String filename, IPartitioner partitioner, List<KeyPosition> indexPositions, BloomFilter bloomFilter, ConcurrentLinkedHashMap<String, Long> keyCache)
+    SSTableReader(String filename, IPartitioner partitioner, List<KeyPosition> indexPositions, BloomFilter bloomFilter)
     {
         super(filename, partitioner);
         this.indexPositions = indexPositions;
         this.bf = bloomFilter;
-        this.keyCache = keyCache;
         synchronized (SSTableReader.this)
         {
             openedFiles.put(filename, this);
@@ -202,14 +188,6 @@
     {
         if (!bf.isPresent(decoratedKey))
             return -1;
-        if (keyCache != null)
-        {
-            Long cachedPosition = keyCache.get(decoratedKey);
-            if (cachedPosition != null)
-            {
-                return cachedPosition;
-            }
-        }
         long start = getIndexScanPosition(decoratedKey, partitioner);
         if (start < 0)
         {
@@ -237,8 +215,6 @@
                 int v = partitioner.getDecoratedKeyComparator().compare(indexDecoratedKey, decoratedKey);
                 if (v == 0)
                 {
-                    if (keyCache != null)
-                        keyCache.put(decoratedKey, position);
                     return position;
                 }
                 if (v > 0)
@@ -307,7 +283,7 @@
         openedFiles.clear();
         for (SSTableReader sstable : sstables)
         {
-            SSTableReader.open(sstable.path, sstable.partitioner, 0.01);
+            SSTableReader.open(sstable.path, sstable.partitioner);
         }
     }
 

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/io/SSTableWriter.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/io/SSTableWriter.java?rev=810570&r1=810569&r2=810570&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/io/SSTableWriter.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/io/SSTableWriter.java Wed Sep  2 15:32:09 2009
@@ -34,7 +34,6 @@
 import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.utils.BloomFilter;
 import org.apache.cassandra.config.DatabaseDescriptor;
-import com.reardencommerce.kernel.collections.shared.evictable.ConcurrentLinkedHashMap;
 
 public class SSTableWriter extends SSTable
 {
@@ -115,7 +114,7 @@
     /**
      * Renames temporary SSTable files to valid data, index, and bloom filter files
      */
-    public SSTableReader closeAndOpenReader(double cacheFraction) throws IOException
+    public SSTableReader closeAndOpenReader() throws IOException
     {
         // bloom filter
         FileOutputStream fos = new FileOutputStream(filterFilename());
@@ -136,10 +135,7 @@
         rename(filterFilename());
         path = rename(path); // important to do this last since index & filter file names are derived from it
 
-        ConcurrentLinkedHashMap<String,Long> keyCache = cacheFraction > 0
-                                                        ? SSTableReader.createKeyCache((int) (cacheFraction * keysWritten))
-                                                        : null;
-        return new SSTableReader(path, partitioner, indexPositions, bf, keyCache);
+        return new SSTableReader(path, partitioner, indexPositions, bf);
     }
 
     static String rename(String tmpFilename)
@@ -154,7 +150,7 @@
         SSTableWriter.rename(indexFilename(dataFileName));
         SSTableWriter.rename(filterFilename(dataFileName));
         dataFileName = SSTableWriter.rename(dataFileName);
-        return SSTableReader.open(dataFileName, StorageService.getPartitioner(), DatabaseDescriptor.getKeysCachedFraction(parseTableName(dataFileName)));
+        return SSTableReader.open(dataFileName, StorageService.getPartitioner());
     }
 
 }

Propchange: incubator/cassandra/branches/cassandra-0.4/test/unit/org/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Sep  2 15:32:09 2009
@@ -1,2 +1,2 @@
 /incubator/cassandra/branches/cassandra-0.3/test/unit/org:774578-796573
-/incubator/cassandra/trunk/test/unit/org:749219-768583
+/incubator/cassandra/trunk/test/unit/org:749219-768583,810540

Modified: incubator/cassandra/branches/cassandra-0.4/test/unit/org/apache/cassandra/io/SSTableTest.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/test/unit/org/apache/cassandra/io/SSTableTest.java?rev=810570&r1=810569&r2=810570&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/test/unit/org/apache/cassandra/io/SSTableTest.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/test/unit/org/apache/cassandra/io/SSTableTest.java Wed Sep  2 15:32:09 2009
@@ -41,7 +41,7 @@
 
         String key = Integer.toString(1);
         writer.append(key, bytes);
-        SSTableReader ssTable = writer.closeAndOpenReader(0.01);
+        SSTableReader ssTable = writer.closeAndOpenReader();
 
         // verify
         verifySingle(ssTable, bytes, key);
@@ -81,7 +81,7 @@
         {
             writer.append(key, map.get(key));
         }
-        SSTableReader ssTable = writer.closeAndOpenReader(0.01);
+        SSTableReader ssTable = writer.closeAndOpenReader();
 
         // verify
         verifyMany(ssTable, map);