[ https://issues.apache.org/jira/browse/POOL-299?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Phil Steitz updated POOL-299: ----------------------------- Fix Version/s: 3.0 > testOnBorrow overrides testOnCreate=false, add testOnReuse to complement > testOnCreate > ------------------------------------------------------------------------------------- > > Key: POOL-299 > URL: https://issues.apache.org/jira/browse/POOL-299 > Project: Commons Pool > Issue Type: Improvement > Affects Versions: 2.4 > Environment: DBCP 2.1.0 with Commons Pool 2.4.0 > Reporter: Justin Cranford > Priority: Minor > Labels: performance > Fix For: 3.0 > > > I am using Commons DBCP 2.1 with Commons Pool 2.4. When borrowing a > connection from DBCP, the underlying pool either reuses a connection or > creates a new connection. Validation of that connection seems to be triggered > in borrowObject() of GenericKeyedObjectPool or GenericObjectPool based on two > settings passed from DBCP 2.1. > if (p != null && (getTestOnBorrow() || create && getTestOnCreate())) { > I would like to only validate reused connections, not new connections. > Validating a new connection is redundant since successful creation of a > connection implies it is already valid. Commons Pools 2 does not allow me to > only validate reused connections, though. If I set testOnBorrow=true, then > Commons Pool 2 validates new or reused connections, and testOnCreate is > effectively overridden. If I set testOnBorrow=false, then my only option to > set testOnCreate=true, but that does not match what I need either. No > combination of these two parameters will work the way I want. > I would like to offer a possible solution. If Commons Pool 2 were to add a > new setting called testOnReuse, it would compliment testOnCreate like so: > > if (p != null && ((getTestOnBorrow()) || (!create && > > getTestOnReuse()) || (create && getTestOnCreate()))) { > This solution allows testOnBorrow to be backwards compatible - it validates > both new or reused objects, and it overrides testOnCreate (and testOnReuse). > However, now I have the option to only validate reused connections, not new > connections, with this combination of settings: > - testOnBorrow=false > - testOnCreate=false > - testOnReuse=true > In short, adding testOnReuse would fix the current inability to only validate > reused objects. It would have the same default value as testOnCreate. If it > can be added to Commons Pool 2, then I would open an enhancement ticket for > Commons DBCP 2 to expose it in its programmatic API and config. Any other > project depending on Commons Pool 2 would benefit as well. -- This message was sent by Atlassian Jira (v8.20.10#820010)