commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jason Hill (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (POOL-325) testOnReturn() available as asynchronous
Date Fri, 02 Jun 2017 22:03:04 GMT

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

Jason Hill updated POOL-325:
----------------------------
    Description: 
I am using Pool2 as part of DBCP2 framework and I immediately found minor performance issues
with using testOnBorrow/testOnCreate only because the waiting request is dependent on validation
step to complete before the transaction can complete.

I opted instead for testWhileIdle and testOnReturn to reduce impact on live transactions.
I assumed incorrectly that the testOnReturn would be asynchronous to prevent the transaction
from further waiting on validation procedure. I cannot think of a case where testOnReturn
is as or more valuable than testOnBorrow unless it provided an asynchronous advantage. I am
interested to hear the intended value?

Either way, I am proposing that testOnReturn provide asynchronous behavior by default or allow
a configurable flag to enable async behavior.

https://git-wip-us.apache.org/repos/asf?p=commons-pool.git;a=blob;f=src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java;h=816c6cf54aad612805b9d48139a3f87b505c0bd8;hb=HEAD

CURRENT:
 548         if (getTestOnReturn()) {
 549             if (!factory.validateObject(p)) {
 550                 try {
 551                     destroy(p);
 552                 } catch (final Exception e) {
 553                     swallowException(e);
 554                 }
 555                 try {
 556                     ensureIdle(1, false);
 557                 } catch (final Exception e) {
 558                     swallowException(e);
 559                 }
 560                 updateStatsReturn(activeTime);
 561                 return;
 562             }
 563         }

  was:
I am using Pool2 as part of DBCP2 framework and I immediately found minor performance issues
with using testOnBorrow/testOnCreate only because the waiting request is dependent on validation
step to complete before the transaction can complete.

I opted instead for testWhileIdle and testOnReturn to reduce impact on live transactions.
I assumed incorrectly that the testOnReturn would be asynchronous to prevent the transaction
from further waiting on validation procedure. I cannot think of a case where testOnReturn
is as or more valuable than testOnBorrow unless it provided an asynchronous advantage. I am
interested to hear the intended value?

Either way, I am proposing that testOnBorrow provide asynchronous behavior by default or allow
a configurable flag to enable async behavior.

https://git-wip-us.apache.org/repos/asf?p=commons-pool.git;a=blob;f=src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java;h=816c6cf54aad612805b9d48139a3f87b505c0bd8;hb=HEAD
CURRENT:
 548         if (getTestOnReturn()) {
 549             if (!factory.validateObject(p)) {
 550                 try {
 551                     destroy(p);
 552                 } catch (final Exception e) {
 553                     swallowException(e);
 554                 }
 555                 try {
 556                     ensureIdle(1, false);
 557                 } catch (final Exception e) {
 558                     swallowException(e);
 559                 }
 560                 updateStatsReturn(activeTime);
 561                 return;
 562             }
 563         }


> testOnReturn() available as asynchronous
> ----------------------------------------
>
>                 Key: POOL-325
>                 URL: https://issues.apache.org/jira/browse/POOL-325
>             Project: Commons Pool
>          Issue Type: New Feature
>    Affects Versions: 2.4
>            Reporter: Jason Hill
>            Priority: Minor
>              Labels: performance
>
> I am using Pool2 as part of DBCP2 framework and I immediately found minor performance
issues with using testOnBorrow/testOnCreate only because the waiting request is dependent
on validation step to complete before the transaction can complete.
> I opted instead for testWhileIdle and testOnReturn to reduce impact on live transactions.
I assumed incorrectly that the testOnReturn would be asynchronous to prevent the transaction
from further waiting on validation procedure. I cannot think of a case where testOnReturn
is as or more valuable than testOnBorrow unless it provided an asynchronous advantage. I am
interested to hear the intended value?
> Either way, I am proposing that testOnReturn provide asynchronous behavior by default
or allow a configurable flag to enable async behavior.
> https://git-wip-us.apache.org/repos/asf?p=commons-pool.git;a=blob;f=src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java;h=816c6cf54aad612805b9d48139a3f87b505c0bd8;hb=HEAD
> CURRENT:
>  548         if (getTestOnReturn()) {
>  549             if (!factory.validateObject(p)) {
>  550                 try {
>  551                     destroy(p);
>  552                 } catch (final Exception e) {
>  553                     swallowException(e);
>  554                 }
>  555                 try {
>  556                     ensureIdle(1, false);
>  557                 } catch (final Exception e) {
>  558                     swallowException(e);
>  559                 }
>  560                 updateStatsReturn(activeTime);
>  561                 return;
>  562             }
>  563         }



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message