-
1. Re: Can't commit because the transaction is in aborted state
adinn Jan 29, 2008 4:14 AM (in response to javacory)If your files are very large and require a long time to process then you may be running up against transaction timeouts. Check your log to see if the TransactionReaper thread has generated any messages saying that the transaction has been rolled back? If so then you need to specify a larger timeout for your transactions.
-
2. Re: Can't commit because the transaction is in aborted state
javacory Jan 29, 2008 8:47 AM (in response to javacory)Thanks for the reply.
Yes, we are very familiar with the transaction timeouts. This is what we get when that happens:
java.lang.IllegalStateException: [com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] [com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] The transaction is not active!; - nested throwable: (java.lang.IllegalStateException: [com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] [com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] The transaction is not active!)
From the behavior of what we are seeing, it's almost like the transactional data associated with the thread is already in the "rolled back" state. Then when we go to use it in a transaction it immediately throws a "RolledBackException".
Cory. -
3. Re: Can't commit because the transaction is in aborted state
marklittle Jan 29, 2008 11:16 AM (in response to javacory)Have you checked the wiki?
-
4. Re: Can't commit because the transaction is in aborted state
javacory Jan 29, 2008 12:57 PM (in response to javacory)Thanks again for the reply.
Yes, I have looked at this. I don't believe this is the issue. There is only one thread participating in the transaction and it's not a timeout scenario. The stateless session bean methods that fail normally take a max of 3-4 seconds.
We simply have a web thread that calls many stateless session bean methods that start/stop a transaction in a serial fashion. The service methods themselves execute very small transactions where we update the Oracle DB and post a message to the JMS Queue. There may be many of these web threads running at the same time, but they should obviously be starting/stopping their own transactions.
I have seen the "com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted" message before, but there is always an underlying reason ( oracle error, jms error, etc. ), but for whatever reason this scenario doesn't give a reason.
Cory. -
5. Re: Can't commit because the transaction is in aborted state
javacory Jan 30, 2008 9:18 AM (in response to javacory)The only consistency that I can find when this "randomly" happens is in the fact that when it happens we have sent multiple JMS messages. Each JMS message that gets sent is sent within its own JMS session ( not transacted ) as we expect the container XA transaction to manage that.
Does anyone know if it is a bad thing to create multiple JMS sessions under one XA transaction?
Thanks much,
Cory.