commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sebb (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (POOL-299) testOnBorrow overrides testOnCreate=false, add testOnReuse to complement testOnCreate
Date Tue, 08 Mar 2016 17:33:40 GMT

     [ https://issues.apache.org/jira/browse/POOL-299?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Sebb updated POOL-299:
----------------------
    Summary: testOnBorrow overrides testOnCreate=false, add testOnReuse to complement testOnCreate
 (was: testOnBorrow overrides testOnCreate=false, add testOnReuse to compliment testOnCreate)

> 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
>
> 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
(v6.3.4#6332)

Mime
View raw message