[ 
https://issues.apache.org/jira/browse/POOL-336?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16307164#comment-16307164
 ] 

Wolfgang Glas commented on POOL-336:
------------------------------------

Hello Gary, Thanks for applying my patch!
I already started spotting other occurrences of {{catch(Exception)}}, most 
notably in GenericObjectPool and GenericKeyedObjectPool.
However, it might get very tedious to write test cases for each and every code 
point catching an Exception.
Before starting this effort, we should get clear on a concise policy for the 
catchers.
>From my point of view, catching {{Throwable}} should be the default pattern, 
>but I'd like to hear the opinion of the original author of the code, whether 
>there was a specific reason for sticking to {{catch(Exception)}} rather than 
>{{catch(Throwable)}}.

> GenericObjectPool's borrowObject lock if create() fails with Error
> ------------------------------------------------------------------
>
>                 Key: POOL-336
>                 URL: https://issues.apache.org/jira/browse/POOL-336
>             Project: Commons Pool
>          Issue Type: Bug
>    Affects Versions: 2.4.3, 2.5.0
>         Environment: mariadb-connector-j
>            Reporter: Wolfgang Glas
>              Labels: patch
>             Fix For: 2.5.1
>
>         Attachments: 0001-Add-a-test-case-for-POOL-336.patch, 
> 0002-Fix-POOL-336.patch
>
>
> We've spotted exactly the same problem as described in POOL-303 for a pool 
> using mariadb-connector-j-2.1.2 with a pool configured to a size, which 
> exactly reflects the normal quantity of used DB connections. 
> After weeks of monitoring the situation, we were able to see the same problem 
> as described in POOL-303. After some more drilldown efforts we concluded, 
> that the problem is triggered, because mariadb-connector-j throws instances 
> of Throwables derived from {{java.lang.Error}}, which are not instances of 
> {{java.lang.Execption}}.
> This leads to a leak of {{makeCount}} in GenericObjectPool.create(), because 
> {{makeCount}} is only decremented, when an instance of 
> {{java.lang.Exception}} is thrown and not when an instance of 
> {{java.langError}} is thrown.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to