Atomikos Forum |
|
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
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
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 |