Author: jbellis
Date: Fri Jun  4 02:41:03 2010
New Revision: 951243

URL: http://svn.apache.org/viewvc?rev=951243&view=rev
Log:
merge from 0.6

Modified:
    cassandra/trunk/   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
   (props changed)
    cassandra/trunk/src/java/org/apache/cassandra/cache/InstrumentedCache.java
    cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
    
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/RowIndexedReader.java
    cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableTracker.java
    cassandra/trunk/test/conf/cassandra.yaml
    cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsPurgeTest.java

Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jun  4 02:41:03 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6:922689-951079
+/cassandra/branches/cassandra-0.6:922689-951242
 /incubator/cassandra/branches/cassandra-0.3:774578-796573
 /incubator/cassandra/branches/cassandra-0.4:810145-834239,834349-834350
 /incubator/cassandra/branches/cassandra-0.5:888872-915439

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jun  4 02:41:03 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-951079
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-951242
 
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573
 
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Cassandra.java:810145-834239,834349-834350
 
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/Cassandra.java:888872-903502

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jun  4 02:41:03 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-951079
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-951242
 
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198
 
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Column.java:810145-834239,834349-834350
 
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/Column.java:888872-903502

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jun  4 02:41:03 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-951079
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-951242
 
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573
 
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:810145-834239,834349-834350
 
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:888872-903502

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jun  4 02:41:03 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-951079
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-951242
 
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573
 
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:810145-834239,834349-834350
 
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:888872-903502

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jun  4 02:41:03 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-951079
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-951242
 
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198
 
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:810145-834239,834349-834350
 
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:888872-903502

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/cache/InstrumentedCache.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cache/InstrumentedCache.java?rev=951243&r1=951242&r2=951243&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cache/InstrumentedCache.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cache/InstrumentedCache.java 
Fri Jun  4 02:41:03 2010
@@ -33,7 +33,7 @@ public class InstrumentedCache<K, V>
     private final AtomicLong hits = new AtomicLong(0);
     private final AtomicLong lastRequests = new AtomicLong(0);
     private final AtomicLong lastHits = new AtomicLong(0);
-    private volatile boolean capacityModified;
+    private volatile boolean capacitySetManually;
 
     public InstrumentedCache(int capacity)
     {
@@ -70,17 +70,22 @@ public class InstrumentedCache<K, V>
         return capacity;
     }
 
-    public boolean isCapacityModified()
+    public boolean isCapacitySetManually()
     {
-        return capacityModified;
+        return capacitySetManually;
     }
-
-    public void setCapacity(int capacity)
+    
+    public void updateCapacity(int capacity)
     {
         map.setCapacity(capacity);
         this.capacity = capacity;
-        capacityModified = true;
-     }
+    }
+
+    public void setCapacity(int capacity)
+    {
+        updateCapacity(capacity);
+        capacitySetManually = true;
+    }
 
     public int getSize()
     {

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=951243&r1=951242&r2=951243&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Fri 
Jun  4 02:41:03 2010
@@ -1087,6 +1087,16 @@ public class ColumnFamilyStore implement
         ssTables_.getRowCache().clear();
     }
 
+    public int getRowCacheSize()
+    {
+        return ssTables_.getRowCache().getCapacity();
+    }
+
+    public int getKeyCacheSize()
+    {
+        return ssTables_.getKeyCache().getCapacity();
+    }
+
     public static Iterable<ColumnFamilyStore> all()
     {
         Iterable<ColumnFamilyStore>[] stores = new 
Iterable[DatabaseDescriptor.getTables().size()];

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/RowIndexedReader.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/RowIndexedReader.java?rev=951243&r1=951242&r2=951243&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/RowIndexedReader.java 
(original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/RowIndexedReader.java 
Fri Jun  4 02:41:03 2010
@@ -140,7 +140,7 @@ class RowIndexedReader extends SSTableRe
 
     public long estimatedKeys()
     {
-        return (indexSummary.getIndexPositions().size() + 1) * 
IndexSummary.INDEX_INTERVAL;
+        return indexSummary.getIndexPositions().size() * 
IndexSummary.INDEX_INTERVAL;
     }
 
     public Collection<DecoratedKey> getKeySamples()

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableTracker.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableTracker.java?rev=951243&r1=951242&r2=951243&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableTracker.java 
(original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableTracker.java 
Fri Jun  4 02:41:03 2010
@@ -100,7 +100,7 @@ public class SSTableTracker implements I
     {
         long keys = estimatedKeys();
 
-        if (!keyCache.isCapacityModified())
+        if (!keyCache.isCapacitySetManually())
         {
             int keyCacheSize = DatabaseDescriptor.getKeysCachedFor(ksname, 
cfname, keys);
             if (keyCacheSize != keyCache.getCapacity())
@@ -108,18 +108,18 @@ public class SSTableTracker implements I
                 // update cache size for the new key volume
                 if (logger.isDebugEnabled())
                     logger.debug("key cache capacity for " + cfname + " is " + 
keyCacheSize);
-                keyCache.setCapacity(keyCacheSize);
+                keyCache.updateCapacity(keyCacheSize);
             }
         }
 
-        if (!rowCache.isCapacityModified())
+        if (!rowCache.isCapacitySetManually())
         {
             int rowCacheSize = DatabaseDescriptor.getRowsCachedFor(ksname, 
cfname, keys);
             if (rowCacheSize != rowCache.getCapacity())
             {
                 if (logger.isDebugEnabled())
                     logger.debug("row cache capacity for " + cfname + " is " + 
rowCacheSize);
-                rowCache.setCapacity(rowCacheSize);
+                rowCache.updateCapacity(rowCacheSize);
             }
         }
     }

Modified: cassandra/trunk/test/conf/cassandra.yaml
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/test/conf/cassandra.yaml?rev=951243&r1=951242&r2=951243&view=diff
==============================================================================
--- cassandra/trunk/test/conf/cassandra.yaml (original)
+++ cassandra/trunk/test/conf/cassandra.yaml Fri Jun  4 02:41:03 2010
@@ -30,6 +30,12 @@ keyspaces:
 
         - name: Standard2
 
+        - name: Standard3
+          keys_cached: 0.5
+
+        - name: Standard4
+          keys_cached: 1.0
+
         - name: StandardLong1
           compare_with: LongType
           clock_type: Timestamp

Modified: 
cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsPurgeTest.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsPurgeTest.java?rev=951243&r1=951242&r2=951243&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsPurgeTest.java 
(original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsPurgeTest.java 
Fri Jun  4 02:41:03 2010
@@ -19,13 +19,8 @@
 package org.apache.cassandra.db;
 
 import java.io.IOException;
-import java.net.InetAddress;
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
 import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
 
 import org.junit.Test;
 
@@ -33,7 +28,6 @@ import org.apache.cassandra.CleanupHelpe
 import org.apache.cassandra.db.filter.QueryFilter;
 import org.apache.cassandra.db.filter.QueryPath;
 import org.apache.cassandra.io.sstable.SSTableReader;
-import org.apache.cassandra.utils.FBUtilities;
 import org.apache.cassandra.Util;
 
 import static junit.framework.Assert.assertEquals;
@@ -134,4 +128,59 @@ public class CompactionsPurgeTest extend
         ColumnFamily cf = 
table.getColumnFamilyStore(cfName).getColumnFamily(QueryFilter.getIdentityFilter(key,
 new QueryPath(cfName)));
         assert cf == null : cf;
     }
+
+    @Test
+    public void testKeyCache50() throws IOException, ExecutionException, 
InterruptedException
+    {
+        testKeyCache("Standard3", 64);
+    }
+
+    @Test
+    public void testKeyCache100() throws IOException, ExecutionException, 
InterruptedException
+    {
+        testKeyCache("Standard4", 128);
+    }
+
+    public void testKeyCache(String cfname, int expectedCacheSize) throws 
IOException, ExecutionException, InterruptedException
+    {
+        CompactionManager.instance.disableAutoCompaction();
+
+        Table table = Table.open(TABLE1);
+        String cfName = cfname;
+        ColumnFamilyStore store = table.getColumnFamilyStore(cfName);
+
+        // KeyCache should start at size 1 if we're caching X% of zero data.
+        int keyCacheSize = store.getKeyCacheSize();
+        assert keyCacheSize == 1 : keyCacheSize;
+
+        DecoratedKey key1 = Util.dk("key1");
+        DecoratedKey key2 = Util.dk("key2");
+        RowMutation rm;
+
+        // inserts
+        rm = new RowMutation(TABLE1, key1.key);
+        rm.add(new QueryPath(cfName, null, "1".getBytes()), new byte[0], new 
TimestampClock(0));
+        rm.apply();
+        rm = new RowMutation(TABLE1, key2.key);
+        rm.add(new QueryPath(cfName, null, "2".getBytes()), new byte[0], new 
TimestampClock(0));
+        rm.apply();
+
+        // deletes
+        rm = new RowMutation(TABLE1, key1.key);
+        rm.delete(new QueryPath(cfName, null, "1".getBytes()), new 
TimestampClock(1));
+        rm.apply();
+        rm = new RowMutation(TABLE1, key2.key);
+        rm.delete(new QueryPath(cfName, null, "2".getBytes()), new 
TimestampClock(1));
+        rm.apply();
+
+        // After a flush, the cache should expand to be X% of indices * 
INDEX_INTERVAL.
+        store.forceBlockingFlush();
+        keyCacheSize = store.getKeyCacheSize();
+        assert keyCacheSize == expectedCacheSize : keyCacheSize;
+
+        // After a compaction, the cache should expand to be X% of zero data.
+        CompactionManager.instance.submitMajor(store, 0, 
Integer.MAX_VALUE).get();
+        keyCacheSize = store.getKeyCacheSize();
+        assert keyCacheSize == 1 : keyCacheSize;
+    }
 }


Reply via email to