You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2009/05/02 06:57:47 UTC
svn commit: r770890 - in
/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool:
ConnectionPool.java PoolProperties.java PooledConnection.java
Author: fhanik
Date: Sat May 2 04:57:47 2009
New Revision: 770890
URL: http://svn.apache.org/viewvc?rev=770890&view=rev
Log:
Implement a hard limit, the 'optimistic' sizing limit is way to optimistic, and can let the pool grow a bit too fast.
A hard limit stays hard.
Clean up pooled connection a bit
Modified:
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java
Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java?rev=770890&r1=770889&r2=770890&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java (original)
+++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java Sat May 2 04:57:47 2009
@@ -56,7 +56,7 @@
//===============================================================================
// INSTANCE/QUICK ACCESS VARIABLE
//===============================================================================
-
+ private AtomicInteger size = new AtomicInteger(0);
/**
* All the information about the connection pool
*/
@@ -169,7 +169,7 @@
* @return int
*/
public int getSize() {
- return idle.size()+busy.size();
+ return size.get();
}
/**
@@ -409,7 +409,7 @@
if (jmxPool!=null) {
jmxPool.notify(org.apache.tomcat.jdbc.pool.jmx.ConnectionPool.NOTIFY_ABANDON, trace);
}
- con.abandon();
+ release(con);
//we've asynchronously reduced the number of connections
//we could have threads stuck in idle.poll(timeout) that will never be notified
if (waitcount.get()>0) idle.offer(new PooledConnection(poolProperties,this));
@@ -429,6 +429,7 @@
con.lock();
con.release();
} finally {
+ size.addAndGet(-1);
con.unlock();
}
}
@@ -463,7 +464,8 @@
//this is not 100% accurate since it doesn't use a shared
//atomic variable - a connection can become idle while we are creating
//a new connection
- if (busy.size() < getPoolProperties().getMaxActive()) {
+ if (size.get() < getPoolProperties().getMaxActive()) {
+ size.addAndGet(1);
return createConnection(now, con);
} //end if
@@ -757,7 +759,7 @@
continue;
if (!con.validate(PooledConnection.VALIDATE_IDLE)) {
idle.remove(con);
- con.release();
+ release(con);
}
} finally {
con.unlock();
Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java?rev=770890&r1=770889&r2=770890&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java (original)
+++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java Sat May 2 04:57:47 2009
@@ -68,7 +68,7 @@
protected String initSQL;
protected boolean testOnConnect =false;
protected String jdbcInterceptors=null;
- protected boolean fairQueue = true;
+ protected boolean fairQueue = false;
protected boolean useEquals = false;
protected int abandonWhenPercentageFull = 0;
protected long maxAge = 0;
Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java?rev=770890&r1=770889&r2=770890&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java (original)
+++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java Sat May 2 04:57:47 2009
@@ -68,35 +68,35 @@
/**
* The underlying database connection
*/
- protected java.sql.Connection connection;
+ private java.sql.Connection connection;
/**
* When we track abandon traces, this string holds the thread dump
*/
- protected String abandonTrace = null;
+ private String abandonTrace = null;
/**
* Timestamp the connection was last 'touched' by the pool
*/
- protected long timestamp;
+ private long timestamp;
/**
* Lock for this connection only
*/
- protected ReentrantReadWriteLock lock = new ReentrantReadWriteLock(false);
+ private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(false);
/**
* Set to true if this connection has been discarded by the pool
*/
- protected boolean discarded = false;
+ private boolean discarded = false;
/**
* The Timestamp when the last time the connect() method was called successfully
*/
- protected volatile long lastConnected = -1;
+ private volatile long lastConnected = -1;
/**
* timestamp to keep track of validation intervals
*/
- protected long lastValidated = System.currentTimeMillis();
+ private volatile long lastValidated = System.currentTimeMillis();
/**
* The instance number for this connection
*/
- protected int instanceCount = 0;
+ private int instanceCount = 0;
/**
* The parent
*/
@@ -107,7 +107,7 @@
* so that we don't create a new list of interceptors each time we borrow
* the connection
*/
- protected WeakReference<JdbcInterceptor> handler = null;
+ private WeakReference<JdbcInterceptor> handler = null;
public PooledConnection(PoolProperties prop, ConnectionPool parent) {
@@ -116,7 +116,7 @@
this.parent = parent;
}
- protected void connect() throws SQLException {
+ public void connect() throws SQLException {
if (connection != null) {
try {
this.disconnect(false);
@@ -178,12 +178,12 @@
return connection!=null;
}
- protected void reconnect() throws SQLException {
+ public void reconnect() throws SQLException {
this.disconnect(false);
this.connect();
} //reconnect
- protected void disconnect(boolean finalize) {
+ private void disconnect(boolean finalize) {
if (isDiscarded()) {
return;
}
@@ -215,16 +215,7 @@
} //end if
}
- public boolean abandon() {
- try {
- disconnect(true);
- } catch (Exception x) {
- log.error("", x);
- } //catch
- return false;
- }
-
- protected boolean doValidate(int action) {
+ private boolean doValidate(int action) {
if (action == PooledConnection.VALIDATE_BORROW &&
poolProperties.isTestOnBorrow())
return true;
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org