[jboss-as7-dev] Better handling of transaction leaks?

Jason T. Greene jason.greene at redhat.com
Tue Oct 18 14:39:16 EDT 2011


On 10/18/11 12:31 PM, Remy Maucherat wrote:
> On Tue, 2011-10-18 at 21:28 +0530, Jaikiran Pai wrote:
>> While looking into a test failure I noticed that currently user
>> applications can end up leaking transactions (associated with the
>> invocation thread):
>>
>> Servlet {
>>
>>      doGet() {
>>        UserTransaction.begin();
>>        doSomeOp();
>>        fail();
>>        // no tx rollback/commit
>>      }
>> }
>>
>> Subsequent transactions on that thread can lead to failures and other
>> sorts of issues. Looking back at previous versions of AS, we had a valve
>> http://anonsvn.jboss.org/repos/jbossas/trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/jca/CachedConnectionValve.java
>> which used to cleanup (and log an error) about the leaking transactions.
>>
>> Do we want something similar for AS7? Also, are there other "entry
>> points" (like servlets for web requests) where such leaks can happen and
>> needs to be taken care off?
>
> JPA has automatic tracking of this sort of things using a valve (and
> added only when needed).
>
> For the insignificant amount of people that will do manual transactions
> and can't be bothered to code properly, everyone gets to pay the cost of
> transaction tracking for all requests to the web container, so I am
> against this feature.
>
> I remember being flamed pretty badly for daring disabling this "nice"
> valve by default in AS 6 :) Hopefully it will go better this time.
>

I'll support you (I'd rather have the perf by default). It seems like it 
should be possible to come up with a fast solution though, instead of 
using the slow CCV. For example its pretty cheap to check the UT 
threadlocal and see if the status is still active (hence a leak).

-- 
Jason T. Greene
JBoss AS Lead / EAP Platform Architect
JBoss, a division of Red Hat


More information about the jboss-as7-dev mailing list