Hi Filip,
Thanks for this precision.
Based on the description on the minIdle parameter, I was thinking the
validation query failure was the only case where the pool can have less
connections than minIdle.
Maybe you could add a note about this or change the behaviour.
Best regards,
Xavier.
Filip Hanik - Dev Lists a écrit :
hi Xavier, the pool is not ignoring the minIdle flag, but you have
configured
p.setMaxAge(43200);
This means,that if a connection has been connected longer than this,
next time you call con.close() it will be closed and not returned to the
pool.
The connection pool itself at this point in time will not create a new
connection. Only when you actually call getConnection() may another
connection be created.
Filip
On 11/16/2009 09:04 AM, Xavier Poinsard wrote:
Hi all,
I have seen a strange behaviour with the new Tomcat jdbc-pool (1.0.7.1).
It seems to ignore the minIdle parameter.
I have been able to reproduce it with a simple program.
minIdle is set to 5 and after a few seconds, I don't have any idle
connection left.
Could anybody confirm the bug or point the mistake in my configuration ?
Thanks in advance.
Best regards,
Xavier.
Here is the test program :
public class TestPool {
public static void main(String[] args) throws Exception {
PoolProperties p = new PoolProperties();
p.setUrl("jdbc:postgresql:XXX");
p.setDriverClassName("org.postgresql.Driver");
p.setUsername("login");
p.setPassword("password");
p.setDefaultAutoCommit(false);
p.setJmxEnabled(false);
p.setTestWhileIdle(true);
p.setTestOnBorrow(true);
p.setValidationQuery("SELECT 1");
p.setTestOnReturn(false);
p.setMaxActive(30);
p.setInitialSize(5);
p.setMaxWait(200000);
p.setMaxAge(43200);
p.setMinIdle(5);
p.setMaxIdle(15);
p.setLogAbandoned(true);
p.setRemoveAbandoned(true);
p.setRemoveAbandonedTimeout(300);
p.setJdbcInterceptors("StatementFinalizer;ResetAbandonedTimer");
DataSource datasource = new DataSource();
datasource.setPoolProperties(p);
Connection con = null;
try {
while(true){
con = datasource.getConnection();
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select count(*) from
users");
rs.close();
st.close();
System.out.println("Pool size : " +datasource.getSize());
System.out.println("Idle : " +datasource.getIdle());
System.out.println("Active : " +datasource.getActive());
con.close();
Thread.sleep(1000);
}
} finally {
if (con!=null) try {con.close();}catch (Exception ignore) {}
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org