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 2010/10/22 05:53:30 UTC
svn commit: r1026207 - in /cassandra/trunk: ./
src/java/org/apache/cassandra/db/
Author: jbellis
Date: Fri Oct 22 03:53:29 2010
New Revision: 1026207
URL: http://svn.apache.org/viewvc?rev=1026207&view=rev
Log:
add memtable settings to CFS mbean. patch by Jon Hermes; reviewed by jbellis for CASSANDRA-1637
Modified:
cassandra/trunk/CHANGES.txt
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java
cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
Modified: cassandra/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1026207&r1=1026206&r2=1026207&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Fri Oct 22 03:53:29 2010
@@ -39,7 +39,8 @@ dev
* PropertyFileSnitch configuration file renamed to
cassandra-topology.properties
* add cli support for get_range_slices (CASSANDRA-1088, CASSANDRA-1619)
- * Make memtable flush thresholds per-CF instead of global (CASSANDRA-1007)
+ * Make memtable flush thresholds per-CF instead of global
+ (CASSANDRA-1007, 1637)
* add cli support for binary data without CfDef hints (CASSANDRA-1603)
* fix building SSTable statistics post-stream (CASSANDRA-1620)
* fix potential infinite loop in 2ary index queries (CASSANDRA-1623)
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=1026207&r1=1026206&r2=1026207&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Fri Oct 22 03:53:29 2010
@@ -183,6 +183,9 @@ public class ColumnFamilyStore implement
/* These are locally held copies to be changed from the config during runtime */
private int minCompactionThreshold;
private int maxCompactionThreshold;
+ private int memtime;
+ private int memsize;
+ private double memops;
private final Runnable rowCacheSaverTask = new WrappedRunnable()
{
@@ -208,6 +211,9 @@ public class ColumnFamilyStore implement
this.metadata = metadata;
this.minCompactionThreshold = metadata.minCompactionThreshold;
this.maxCompactionThreshold = metadata.maxCompactionThreshold;
+ this.memtime = metadata.memtableFlushAfterMins;
+ this.memsize = metadata.memtableThroughputInMb;
+ this.memops = metadata.memtableOperationsInMillions;
this.partitioner = partitioner;
fileIndexGenerator.set(generation);
memtable = new Memtable(this);
@@ -580,7 +586,7 @@ public class ColumnFamilyStore implement
*/
public String getFlushPath()
{
- long guessedSize = 2 * metadata.memtableThroughputInMb * 1024*1024; // 2* adds room for keys, column indexes
+ long guessedSize = 2 * memsize * 1024*1024; // 2* adds room for keys, column indexes
String location = DatabaseDescriptor.getDataFileLocationForTable(table.name, guessedSize);
if (location == null)
throw new RuntimeException("Insufficient disk space to flush");
@@ -1831,7 +1837,6 @@ public class ColumnFamilyStore implement
public void setMinimumCompactionThreshold(int minCompactionThreshold)
{
- //TODO: If someone complains this is too rude, make it more friendly.
if ((minCompactionThreshold > this.maxCompactionThreshold) && this.maxCompactionThreshold != 0) {
throw new RuntimeException("The min_compaction_threshold cannot be larger than the max.");
}
@@ -1845,7 +1850,6 @@ public class ColumnFamilyStore implement
public void setMaximumCompactionThreshold(int maxCompactionThreshold)
{
- //TODO: If someone complains this is too rude, make it more friendly.
if (maxCompactionThreshold < this.minCompactionThreshold) {
throw new RuntimeException("The max_compaction_threshold cannot be smaller than the min.");
}
@@ -1857,4 +1861,40 @@ public class ColumnFamilyStore implement
this.minCompactionThreshold = 0;
this.maxCompactionThreshold = 0;
}
+
+ public int getMemtableFlushAfterMins()
+ {
+ return memtime;
+ }
+ public void setMemtableFlushAfterMins(int time)
+ {
+ if (time <= 0) {
+ throw new RuntimeException("MemtableFlushAfterMins must be greater than 0.");
+ }
+ this.memtime = time;
+ }
+
+ public int getMemtableThroughputInMB()
+ {
+ return memsize;
+ }
+ public void setMemtableThroughputInMB(int size)
+ {
+ if (size <= 0) {
+ throw new RuntimeException("MemtableThroughputInMB must be greater than 0.");
+ }
+ this.memsize = size;
+ }
+
+ public double getMemtableOperationsInMillions()
+ {
+ return memops;
+ }
+ public void setMemtableOperationsInMillions(double ops)
+ {
+ if (ops <= 0) {
+ throw new RuntimeException("MemtableOperationsInMillions must be greater than 0.0.");
+ }
+ this.memops = ops;
+ }
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java?rev=1026207&r1=1026206&r2=1026207&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java Fri Oct 22 03:53:29 2010
@@ -201,4 +201,13 @@ public interface ColumnFamilyStoreMBean
* Disable automatic compaction.
*/
public void disableAutoCompaction();
+
+ public int getMemtableFlushAfterMins();
+ public void setMemtableFlushAfterMins(int time);
+
+ public int getMemtableThroughputInMB();
+ public void setMemtableThroughputInMB(int size);
+
+ public double getMemtableOperationsInMillions();
+ public void setMemtableOperationsInMillions(double ops);
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java?rev=1026207&r1=1026206&r2=1026207&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java Fri Oct 22 03:53:29 2010
@@ -66,8 +66,8 @@ public class Memtable implements Compara
this.cfs = cfs;
creationTime = System.currentTimeMillis();
- this.THRESHOLD = cfs.metadata.memtableThroughputInMb * 1024 * 1024;
- this.THRESHOLD_COUNT = (int) (cfs.metadata.memtableOperationsInMillions * 1024 * 1024);
+ this.THRESHOLD = cfs.getMemtableThroughputInMB() * 1024 * 1024;
+ this.THRESHOLD_COUNT = (int) (cfs.getMemtableOperationsInMillions() * 1024 * 1024);
}
/**
@@ -294,6 +294,6 @@ public class Memtable implements Compara
public boolean isExpired()
{
- return System.currentTimeMillis() > creationTime + cfs.metadata.memtableFlushAfterMins * 60 * 1000;
+ return System.currentTimeMillis() > creationTime + cfs.getMemtableFlushAfterMins() * 60 * 1000;
}
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java?rev=1026207&r1=1026206&r2=1026207&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/Table.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/Table.java Fri Oct 22 03:53:29 2010
@@ -263,7 +263,7 @@ public class Table
int minCheckMs = Integer.MAX_VALUE;
for (ColumnFamilyStore cfs : columnFamilyStores.values())
{
- minCheckMs = Math.min(minCheckMs, cfs.metadata.memtableFlushAfterMins * 60 * 1000);
+ minCheckMs = Math.min(minCheckMs, cfs.getMemtableFlushAfterMins() * 60 * 1000);
}
Runnable runnable = new Runnable()