[jboss-jira] [JBoss JIRA] Commented: (JBAS-4481) Transaction timeouts leave garbage Status.ROLLEDBACK UserTransaction object bound to the thread
Gavin King (JIRA)
jira-events at lists.jboss.org
Wed Jun 13 10:00:57 EDT 2007
[ http://jira.jboss.com/jira/browse/JBAS-4481?page=comments#action_12365222 ]
Gavin King commented on JBAS-4481:
----------------------------------
Excuse me, what the spec actually says is:
* JTA transactions should be started and completed in the thread in which the service method is called. Additional threads that are created for any purpose should not attempt to start JTA transactions.
* If a web component creates a thread, the J2EE platform must ensure that the newly created thread is not associated with any JTA transaction.
* Transactions may not span web requests from a client. A web component starts a transaction in the service method of a servlet (or, for a JSP page, the service method of the equivalent JSP page Implementation Class) and it must be completed before the service method returns. Returning from the service method with an active transaction context is an error. _The_web_container_is_required_ to detect this error and abort the transaction.
Furthermore, neither Transaction nor UserTransaction provide any kind of join() method, and suspend()/resume() on TransactionManager explicitly outlaws resuming a tx that is already associated with another thread.
So I'm totally confused about how, according to spec, an application could possibly have a single tx associated with >1 thread.
> Transaction timeouts leave garbage Status.ROLLEDBACK UserTransaction object bound to the thread
> -----------------------------------------------------------------------------------------------
>
> Key: JBAS-4481
> URL: http://jira.jboss.com/jira/browse/JBAS-4481
> Project: JBoss Application Server
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Transaction Manager
> Affects Versions: JBossAS-4.2.0.GA
> Reporter: Gavin King
> Assigned To: Jonathan Halliday
> Priority: Blocker
> Fix For: JBossAS-4.2.1.CR1
>
>
> If a transaction timeout occurs, the UserTransaction object does not get cleaned up from the thread, even after the request ends and the thread returns to the pool. Future requests will not be able to begin() a transaction, since the STATUS_ROLLEDBACK UserTransaction throws this exception:
> Caused by: javax.transaction.NotSupportedException
> at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.begin(BaseTransaction.java:79)
> at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.begin(BaseTransactionManagerDelegate.java:77)
> at org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:124)
> at org.jboss.seam.transaction.UTTransaction.begin(UTTransaction.java:29)
> This means that any transaction timeout that occurs will leave the application server in a permanently broken state and require a server restart. Hence 4.2.0.GA is currently unusable in production!
> This needs to be fixed in an immediate patch release.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list