[
http://jira.jboss.com/jira/browse/JBAS-4481?page=comments#action_12365227 ]
Gavin King commented on JBAS-4481:
----------------------------------
"You're allowed to pass Transaction via suspend and resume in JTA."
AFAICT, this is not true. resume() does not support resuming by multiple threads.
Regardless, the app is not allowed to call TransactionManager anyway. The only thing its
got is UserTransaction.
"A thread can't just start a transaction and ignore it."
Correct, it is an error to do that, and the spec says (for good reason):
"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."
"Is this thread created by Seam, Hibernate or the application server."
This thread is in Tomcat's thread pool, of course.
"I already told you why we can't break the thread-to-transaction association in
the case of timeout."
Whynot? What spec says that? And yes, you can, and you must. Otherwise thread goes back
in Tomcat's pool with a garbage transaction object associated with it.
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