You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ja...@apache.org on 2011/12/23 20:10:55 UTC
svn commit: r1222806 - in /cassandra/branches/cassandra-1.0: ./
src/java/org/apache/cassandra/db/ src/java/org/apache/cassandra/db/index/
src/java/org/apache/cassandra/db/index/keys/
Author: jake
Date: Fri Dec 23 19:10:54 2011
New Revision: 1222806
URL: http://svn.apache.org/viewvc?rev=1222806&view=rev
Log:
Secondary Indexes should report memory consumption
Patch by tjake; reviewed by jbellis for CASSANDRA-3155
Modified:
cassandra/branches/cassandra-1.0/CHANGES.txt
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndex.java
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java
Modified: cassandra/branches/cassandra-1.0/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/CHANGES.txt?rev=1222806&r1=1222805&r2=1222806&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/CHANGES.txt (original)
+++ cassandra/branches/cassandra-1.0/CHANGES.txt Fri Dec 23 19:10:54 2011
@@ -14,7 +14,7 @@ Merged from 0.8:
* avoid logging (harmless) exception when GC takes < 1ms (CASSANDRA-3656)
* prevent new nodes from thinking down nodes are up forever (CASSANDRA-3626)
* Flush non-cfs backed secondary indexes (CASSANDRA-3659)
-
+ * Secondary Indexes should report memory consumption (CASSANDRA-3155)
1.0.6
* (CQL) fix cqlsh support for replicate_on_write (CASSANDRA-3596)
Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1222806&r1=1222805&r2=1222806&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Fri Dec 23 19:10:54 2011
@@ -1028,10 +1028,7 @@ public class ColumnFamilyStore implement
public long getTotalMemtableLiveSize()
{
- long total = 0;
- for (ColumnFamilyStore cfs : concatWithIndexes())
- total += cfs.getMemtableThreadSafe().getLiveSize();
- return total;
+ return getMemtableDataSize() + indexManager.getTotalLiveSize();
}
public int getMemtableSwitchCount()
Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndex.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndex.java?rev=1222806&r1=1222805&r2=1222806&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndex.java (original)
+++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndex.java Fri Dec 23 19:10:54 2011
@@ -112,6 +112,11 @@ public abstract class SecondaryIndex
public abstract void forceBlockingFlush() throws IOException;
/**
+ * Get current amount of memory this index is consuming (in bytes)
+ */
+ public abstract long getLiveSize();
+
+ /**
* Allow access to the underlying column family store if there is one
* @return the underlying column family store or null
*/
Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java?rev=1222806&r1=1222805&r2=1222806&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java (original)
+++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java Fri Dec 23 19:10:54 2011
@@ -328,6 +328,27 @@ public class SecondaryIndexManager
return indexList.keySet();
}
+ /**
+ * @return total current ram size of all indexes
+ */
+ public long getTotalLiveSize()
+ {
+ long total = 0;
+
+ // we use identity map because per row indexes use same instance
+ // across many columns
+ IdentityHashMap<SecondaryIndex, Object> indexList = new IdentityHashMap<SecondaryIndex, Object>();
+
+ for (Map.Entry<ByteBuffer, SecondaryIndex> entry : indexesByColumn.entrySet())
+ {
+ SecondaryIndex index = entry.getValue();
+
+ if (indexList.put(index, index) == null)
+ total += index.getLiveSize();
+ }
+
+ return total;
+ }
/**
* Removes obsolete index entries and creates new ones for the given row key
Modified: cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java?rev=1222806&r1=1222805&r2=1222806&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java (original)
+++ cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java Fri Dec 23 19:10:54 2011
@@ -152,4 +152,9 @@ public class KeysIndex extends PerColumn
{
// no options used
}
+
+ public long getLiveSize()
+ {
+ return indexCfs.getMemtableDataSize();
+ }
}