Atomikos Forum |
|
Hi, i 'm using atomikos with informix XA jdbc driver, but in some occations i 'm receiving this exception and my transaction is rolled back:
2010-02-04 18:22:23,353 [33179775@qtp-12916846-6] [] WARN atomikos - XA resource 'informix': resume for XID '626F6F6E6E6E30303030323030303134:626F6F6E6E6E32' raised -8: the supplied XID already exists in this XA resource javax.transaction.xa.XAException at com.informix.jdbcx.IfxXAResource.start(IfxXAResource.java:458) at com.atomikos.datasource.xa.XAResourceTransaction.resume(XAResourceTransaction.java:647) at com.atomikos.datasource.xa.session.BranchEnlistedStateHandler.<init>(BranchEnlistedStateHandler.java:32) at com.atomikos.datasource.xa.session.NotInBranchStateHandler.checkEnlistBeforeUse(NotInBranchStateHandler.java:41) at com.atomikos.datasource.xa.session.TransactionContext.checkEnlistBeforeUse(TransactionContext.java:60) at com.atomikos.datasource.xa.session.SessionHandleState.notifyBeforeUse(SessionHandleState.java:151) at com.atomikos.jdbc.AtomikosConnectionProxy.enlist(AtomikosConnectionProxy.java:172) at com.atomikos.jdbc.AtomikosConnectionProxy.invoke(AtomikosConnectionProxy.java:106) at $Proxy77.prepareStatement(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.hibernate.util.GetGeneratedKeysHelper.prepareStatement(GetGeneratedKeysHelper.java:49) at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:487) at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:94) at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.prepare(IdentityGenerator.java:69) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:30) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2108) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2588) at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:180) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:108) at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:186) at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:123) at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:687) at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:669) at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:245) at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:268) at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:216) at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169) at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296) at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242) at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219) at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169) at org.hibernate.engine.Cascade.cascade(Cascade.java:130) at org.hibernate.event.def.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:407) at org.hibernate.event.def.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:152) at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:126) at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:53) at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:677) at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:661) at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:665) at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:227) Any clue what can this be? I never delete any epoch file. Thanks Javier
OK,
This is the problem: it seems like your Informix does not support the XA JOIN flag correctly: 10-02-05 15:54:18,366 [32846040@qtp-2347640-10] XAResource.start ( 3137322E33312E3131332E3131372E746D30303030313030303631:3137322E33312E3131332E3131372E746D31 , XAResource.TMNOFLAGS ) on resource informix represented by XAResource instance com.informix.jdbcx.IfxXAResource@1beb7ec 10-02-05 15:54:18,506 [32846040@qtp-2347640-10] XAResource.end ( 3137322E33312E3131332E3131372E746D30303030313030303631:3137322E33312E3131332E3131372E746D31 , XAResource.TMSUCCESS ) on resource informix represented by XAResource instance com.informix.jdbcx.IfxXAResource@1beb7ec 10-02-05 15:54:19,037 [32846040@qtp-2347640-10] addParticipant ( XAResourceTransaction: 3137322E33312E3131332E3131372E746D30303030313030303631:3137322E33312E3131332E3131372E746D31 ) for transaction 172.31.113.117.tm0000100061 10-02-05 15:54:19,037 [32846040@qtp-2347640-10] XAResourceTransaction: 3137322E33312E3131332E3131372E746D30303030313030303631:3137322E33312E3131332E3131372E746D31: about to switch to XAResource com.informix.jdbcx.IfxXAResource@1beb7ec 10-02-05 15:54:19,037 [32846040@qtp-2347640-10] XAResource.start ( 3137322E33312E3131332E3131372E746D30303030313030303631:3137322E33312E3131332E3131372E746D31 , XAResource.TMJOIN ) on resource informix represented by XAResource instance com.informix.jdbcx.IfxXAResource@1beb7ec 10-02-05 15:54:19,037 [32846040@qtp-2347640-10] XA resource 'informix': resume for XID '3137322E33312E3131332E3131372E746D30303030313030303631:3137322E33312E3131332E3131372E746D31' raised -8: the supplied XID already exists in this XA resource This means that your informix is not XA-compliant. What version are you using? Do you have support from them? This also explains why it doesn't happen with the non-XA config. HTH |