[ https://issues.apache.org/jira/browse/POOL-131?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Phil Steitz closed POOL-131. ---------------------------- > Make org.apache.commons.pool.impl.GenericObjectPool.returnObject(Object) log > errors about passivation/destroying > ---------------------------------------------------------------------------------------------------------------- > > Key: POOL-131 > URL: https://issues.apache.org/jira/browse/POOL-131 > Project: Commons Pool > Issue Type: Improvement > Affects Versions: 1.4 > Environment: Spring Framework JTA transaction Manager + jBossTS + DBCP > Reporter: Mauro Molinari > Fix For: 2.0 > > > In our environment it happens the following. Suppose our code has a bug and > does not release a connection previously obtained from DBCP. > Suppose a JTA transaction is in progress when this happens. > When trying to commit this transaction, Spring has a guard that realizes that > the owner of that transaction is in some way "dead", so it tries to close the > connection before committing (I think this is a problem, however, let's go > on). Closing the connection makes DBCP/Pool call returnObject on the > GenericObjectPool, then addObjectToPool and, at last, passivateObject. As the > connection is neither in auto-commit mode nor read-only, passivateObject > issues a rollback on the connection but then jBossTS throws a SQLException > saying that it is not allowed to issue a rollback on an underlying connection > while a higher level JTA transaction is in progress. This exception is caught > by returnObject and it is completely lost, because returnObject does not log > it, nor it forwards it upward. > The final result is that: > - the connection is not given back to the Pool, because of the exception > - however, the physical underlying connection to the DBMS remains open > => we have a connection leak, without any proof of it (no exceptions are > logged in any way) > To get to these results I had to carefully debug my code. It would have been > very easier if Pool logged exceptions thrown during passivation. -- This message was sent by Atlassian JIRA (v6.3.4#6332)