On Fri, Jan 21, 2011 at 12:46 PM, Sumedha Rubasinghe <[email protected]>wrote:

>
>
> On Fri, Jan 21, 2011 at 12:40 PM, Anjana Fernando <[email protected]> wrote:
>
>> Hi,
>>
>> I noticed that most of the time, we are using the validation query in
>> an inefficient way. The current logic that is in Registry/UM is the
>> "testOnBorrow" approach. Here, each time a connection is acquired from
>> the connection pool, the validation query is run to validate it. So
>> most of the places, we just execute a single query at a time, so
>> effectively for each query, the validation query will be executed as
>> well, so this will result in 2x query execution with validation query
>> on.
>>
>> So, most of the time, we will not need this, the main reason we use
>> this is, to recover from stale connections. We've two alternatives for
>> this,
>>
>> 1. Use the mode "testWhileIdle" with the validation query, also
>> setting "timeBetweenEvictionRunsMillis" to specify the interval where
>> an 'evictor' thread it run. Here when the evictor thread is run, it
>> executes the validation query for all the connections and check if
>> they are active, if not, they are dropped from the pool.
>>
>> 2. No validation query is used, "minEvictableIdleTimeMillis" is
>> specified with "timeBetweenEvictionRunsMillis". This effectively
>> signals DBCP, for all the connections that are idle for
>> "minEvictableIdleTimeMillis" time period, the evictor thread will
>> identify them and drop them. Note that, this will not use a validation
>> query.
>>
>> So the perfect option would be to use the second option. Where it will
>> not at least use the validation query, where you can simply put a
>> "minEvictableIdleTimeMillis" value which is a bit less than the
>> connection time-out for a specific DBMS. For example, if MySQL
>> connection time-out is 8hrs, we can safely put 4 or 6 hrs as the
>> "minEvictableIdleTimeMillis" value.
>>
>> The only upside when using "testOnBorrow" is, for a situation like, if
>> the database is resetted for some reason or some unexpected
>> communication problem occurs, then all the connections in the
>> connection pool becomes invalid, and then when a connection is
>> acquired from the pool, it will immediately run the validation query
>> and renew the connections.
>>
>> This functionality is already there in the data sources component to
>> provide the configuration, and this also will be there in the next DSS
>> release. It will be better if this is also added to Registry/UM. For
>> more info, refer to [1].
>>
>
> Anjana,
> We will be using data sources component for UM & Registry database
> connections. I guess problems you have mentioned will be solved by that.
>

+1. Let's get this done, so that we can finish up the MT data storage and
tenant partitioning work pending for Stratos.

Thanks,
Senaka.


>  /sumedha
>
>
>>
>> [1] http://commons.apache.org/dbcp/configuration.html
>>
>> Cheers,
>> Anjana.
>>
>> --
>> Anjana Fernando
>> Software Engineer
>> WSO2, Inc.; http://wso2.com
>> lean.enterprise.middleware
>> _______________________________________________
>> Carbon-dev mailing list
>> [email protected]
>> https://wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>
>
>
> _______________________________________________
> Carbon-dev mailing list
> [email protected]
> https://wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>
>


-- 
*Senaka Fernando*
Product Manager - WSO2 Governance Registry;
Associate Technical Lead; WSO2, Inc.; http://wso2.com*
Member; Apache Software Foundation; http://apache.org

E-mail: senaka AT wso2.com
**P: +1 408 754 7388; ext: 51736*; *M: +94 77 322 1818
Linked-In: http://www.linkedin.com/in/senakafernando

*Lean . Enterprise . Middleware
_______________________________________________
Carbon-dev mailing list
[email protected]
https://wso2.org/cgi-bin/mailman/listinfo/carbon-dev

Reply via email to