On 11/7/10 10:07 AM, Jason Britton wrote:
Hi -
Using older version of dbcp (1.2.2) and pool (1.3) we've been getting
java.sql.SQLException: Io exception: Connection reset after retrieving a
connection from pool that has been timed out or gone away for some reason
even though we've configured dbcp with testOnBorrow and validationQuery.  I
have even tried adding in the idle evictor thread settings as well with no
help from that either.  I've just updated our libs to use latest dbcp and
pool but I'm very pessimistic that updating the libs would fix such a very
fundamental problem or am I completely missing what testOnBorrow and
validationQuery should be accomplishing?  I'd really love to hear that this
bug/lack of robustness has been addressed in latest version of dbcp or that
my configuration parameters below are at fault.  Thanks for any suggestions
or information,

             DriverAdapterCPDS da = new DriverAdapterCPDS();
             da.setDriver("oracle.jdbc.OracleDriver");
             da.setPoolPreparedStatements(false);
             da.setUrl(DB_CONNECT_STR);
             SharedPoolDataSource tds = new SharedPoolDataSource();
             tds.setConnectionPoolDataSource(da);
             tds.setValidationQuery("select 'validationQuery' from dual");
             tds.setTestOnBorrow(true);

             tds.setMaxActive(450);
             tds.setMaxWait(1000);
             tds.setMaxIdle(20);

             tds.setTestWhileIdle(true);
             tds.setTimeBetweenEvictionRunsMillis(100000);
             tds.setNumTestsPerEvictionRun(100);
             tds.setMinEvictableIdleTimeMillis(450000);


Does your code hold on to connections for a long time while they are checked out of the pool? The configuration above should guarantee that a connection returned by tds.getConnection() has just been validated. Are you getting this error immediately after retrieving a connection from the pool? DBCP does nothing to validate connections being held by clients, so if your code is holding onto the connections for a while and a server-side or connectivity problem happens while you are using a connection, there is nothing that DBCP can do to help.

In any case, you should determine the source of the server-side connection resets or connectivity problems. DBCP's ability to handle these problems is currently limited to testing connections when they are borrowed, returned or sitting idle in the pool. We are looking at options for improving robustness in version 2.0. Suggestions for improvement are welcome via JIRA or on the dev list. Suggestions including patches are *most* welcome.

Phil

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to