Atomikos Forum

Problem with JMS,XA and BrokerException

Hi,
I'm using OpenMQ (4.3) as my JMS provider for a J2SE application.
I've been using it for about a year and had no problems with it although I have also been using the very basic and mainstream features.
I needed to use XA transactions and so I started to use Atomikos. I did the relevant changes in the application code and I suddenly started seeing a strange, and somewhat unclear, BrokerException in the logs of my broker.
Excerpt of the broker logs:
ERROR com.sun.messaging.jmq.jmsserver.util.BrokerException: Bad transaction state transition. Cannot perform operation END_TRANSACTION(58) (XAFlag=0x2000000:TMSUSPEND) on a transaction in state PREPARED(5).: TUID=**** Xid=****:
com.sun.messaging.jmq.jmsserver.util.BrokerException: Bad transaction state transition. Cannot perform operation END_TRANSACTION(58) (XAFlag=0x2000000:TMSUSPEND) on a transaction in state PREPARED(5).
at com.sun.messaging.jmq.jmsserver.data.TransactionState.nextState(TransactionState.java:440)
at com.sun.messaging.jmq.jmsserver.data.handlers.TransactionHandler.doEnd(TransactionHandler.java:2010)
at com.sun.messaging.jmq.jmsserver.data.handlers.TransactionHandler.handle(TransactionHandler.java:540)
at com.sun.messaging.jmq.jmsserver.data.PacketRouter.handleMessage(PacketRouter.java:181)
at com.sun.messaging.jmq.jmsserver.service.imq.IMQIPConnection.readData(IMQIPConnection.java:1489)
at com.sun.messaging.jmq.jmsserver.service.imq.IMQIPConnection.process(IMQIPConnection.java:644)
at com.sun.messaging.jmq.jmsserver.service.imq.OperationRunnable.process(OperationRunnable.java:170)
at com.sun.messaging.jmq.jmsserver.util.pool.BasicRunnable.run(BasicRunnable.java:493)
at java.lang.Thread.run(Unknown Source)

I was told in the OpenMQ forum that: "...it is not valid to perform an xa_end operation on a transaction that is in the Prepared state. This rule is defined by the XA specification, not by MQ."

Is Atomikos not honoring the XA specification (I doubt it)?
I would think that maybe it's my usage but I think that the TM should disallow such a flow if the XA spec disallows it.

Thanks,
Ittai
Ittai Zeidman Send private email
Tuesday, November 30, 2010
 
 
Do you think this error can be related to the fact I had several J2SE applications on the same server while I did not have the "com.atomikos.icatch.tm_unique_name" property defined?

Ittai
Ittai Zeidman Send private email
Tuesday, November 30, 2010
 
 
Possibly yes - if you have multiple instances with the same name then the transaction ids and Xids will not be unique and you will get confusing things like these...
Guy Pardon Send private email
Monday, December 06, 2010
 
 
Hi Guy,
I haven't seen this error since setting the property so I hope this issue is resolved.
On the other hand I've started receiving the following error very frequently in my logs (but still without a clear recurring scenario):
ERROR Exception starting new transaction: com.sun.messaging.jmq.jmsserver.util.BrokerException: [B4061]: Can not use Transaction ID 4422584148822560256[Xid=31302E3130302E3130312E35372E746D3331302E3130302E3130312E35372E746D30303030313030303031] : ID is currently in use:
com.sun.messaging.jmq.jmsserver.util.BrokerException: [B4061]: Can not use Transaction ID 4422584148822560256[Xid=31302E3130302E3130312E35372E746D3331302E3130302E3130312E35372E746D30303030313030303031] : ID is currently in use at com.sun.messaging.jmq.jmsserver.data.TransactionList.addTransactionID(TransactionList.java:397)at com.sun.messaging.jmq.jmsserver.data.TransactionList.addTransactionID(TransactionList.java:368) at com.sun.messaging.jmq.jmsserver.data.handlers.TransactionHandler.doStart(TransactionHandler.java:1986)    at com.sun.messaging.jmq.jmsserver.data.handlers.TransactionHandler.handle(TransactionHandler.java:520)at com.sun.messaging.jmq.jmsserver.data.PacketRouter.handleMessage(PacketRouter.java:181)at com.sun.messaging.jmq.jmsserver.service.imq.IMQIPConnection.readData(IMQIPConnection.java:1489)at com.sun.messaging.jmq.jmsserver.service.imq.IMQIPConnection.process(IMQIPConnection.java:644)at com.sun.messaging.jmq.jmsserver.service.imq.OperationRunnable.process(OperationRunnable.java:170)at com.sun.messaging.jmq.jmsserver.util.pool.BasicRunnable.run(BasicRunnable.java:493)at java.lang.Thread.run(Unknown Source)
ERROR [B3100]: Unexpected Broker Internal Error : [com.sun.messaging.jmq.jmsserver.util.BrokerException: [B4061]: Can not use Transaction ID 4422584148822560256[Xid=31302E3130302E3130312E35372E746D3331302E3130302E3130312E35372E746D30303030313030303031] : ID is currently in use: TUID=4422584148822560256 Xid=31302E3130302E3130312E35372E746D3331302E3130302E3130312E35372E746D30303030313030303031]:
com.sun.messaging.jmq.jmsserver.util.BrokerException: [B4061]: Can not use Transaction ID 4422584148822560256[Xid=31302E3130302E3130312E35372E746D3331302E3130302E3130312E35372E746D30303030313030303031] : ID is currently in use at com.sun.messaging.jmq.jmsserver.data.TransactionList.addTransactionID(TransactionList.java:397)at com.sun.messaging.jmq.jmsserver.data.TransactionList.addTransactionID(TransactionList.java:368)at com.sun.messaging.jmq.jmsserver.data.handlers.TransactionHandler.doStart(TransactionHandler.java:1986)at com.sun.messaging.jmq.jmsserver.data.handlers.TransactionHandler.handle(TransactionHandler.java:520)at com.sun.messaging.jmq.jmsserver.data.PacketRouter.handleMessage(PacketRouter.java:181)at com.sun.messaging.jmq.jmsserver.service.imq.IMQIPConnection.readData(IMQIPConnection.java:1489)at com.sun.messaging.jmq.jmsserver.service.imq.IMQIPConnection.process(IMQIPConnection.java:644)at com.sun.messaging.jmq.jmsserver.service.imq.OperationRunnable.process(OperationRunnable.java:170)at com.sun.messaging.jmq.jmsserver.util.pool.BasicRunnable.run(BasicRunnable.java:493)at java.lang.Thread.run(Unknown Source)

I think this is again Atomikos related as I've never received such error before using JMS with Atomikos.
Also, I'm not sure if it's related (and I've started a thread about it) but my tm.out files are huge, some of them are 200MB in size.

I appreciate any help granted,
Ittai
Ittai Zeidman Send private email
Sunday, December 12, 2010
 
 
Did you delete any .epoch files? If so, try not to or you can get things like these :-)
Guy Pardon Send private email
Monday, December 13, 2010
 
 
Hi Guy,
Yes I did delete the .epoch files after getting a 1.3GB file of tm.out I removed the directories of the modules (each module has it's own work directory) and tried to load them again as the tm.out files were delaying the load.
What can I do now so that things go back in sync and the different tm's won't step on each other's toes?
Because I've fired up the modules after deleting the .epoch files and they were created again afterwards while the problem persisted.

Thanks,
Ittai
Ittai Zeidman Send private email
Thursday, December 16, 2010
 
 
Assuming this is not production:

-shut down each TM
-delete all .log files
-restart each TM

That should work.
Guy Pardon Send private email
Wednesday, December 22, 2010
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics