Author: eevans
Date: Thu Dec 15 15:05:08 2011
New Revision: 1214803
URL: http://svn.apache.org/viewvc?rev=1214803&view=rev
Log:
bump maximum cached prepared statements to 10,000 (from 50)
(and fix Map so that it is actually LRU)
Patch by evans for CASSANDRA-2475
Modified:
cassandra/trunk/src/java/org/apache/cassandra/service/ClientState.java
Modified: cassandra/trunk/src/java/org/apache/cassandra/service/ClientState.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/ClientState.java?rev=1214803&r1=1214802&r2=1214803&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/ClientState.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/ClientState.java Thu
Dec 15 15:05:08 2011
@@ -43,7 +43,7 @@ import org.apache.cassandra.thrift.Inval
*/
public class ClientState
{
- private static final int MAX_CACHE_PREPARED = 50; // Ridiculously large,
right?
+ private static final int MAX_CACHE_PREPARED = 10000; // Enough to keep
buggy clients from OOM'ing us
private static Logger logger = LoggerFactory.getLogger(ClientState.class);
// Current user for the session
@@ -53,7 +53,7 @@ public class ClientState
private final List<Object> resource = new ArrayList<Object>();
// An LRU map of prepared statements
- private Map<Integer, CQLStatement> prepared = new HashMap<Integer,
CQLStatement>() {
+ private Map<Integer, CQLStatement> prepared = new LinkedHashMap<Integer,
CQLStatement>(16, 0.75f, true) {
protected boolean removeEldestEntry(Map.Entry<Integer, CQLStatement>
eldest) {
return size() > MAX_CACHE_PREPARED;
}