Atomikos Forum

Atomikos + Jetty + JPA +Hibernate + Informix

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
Javier Kusselewski Send private email
Thursday, February 04, 2010
 
 
Hi,

Since you don't delete the epoch file this must be a problem in your configuration IMHO.

Do you have a budget for developer access? If so, we can schedule a remote one-on-one support session to find out.

Best
Guy Pardon Send private email
Friday, February 05, 2010
 
 
Hi, sorry, i don 't have budget for this.
Do you think this is a configuration problem? I just followed all the steps of the documentation. If i use informix with the NoXADatasource, everything works ok.

Thanks
Javier
Javier Kusselewski Send private email
Friday, February 05, 2010
 
 
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
Guy Pardon Send private email
Monday, February 08, 2010
 
 
I 'm using informix 11.5 and i 'm using jdbc XA driver 3.5_JC4, and i have informix support, i will follow this with them also. This is new? or informix never supported TMJOIN?

Thanks
Javier
Javier Kusselewski Send private email
Monday, February 08, 2010
 
 
Ok, i found a solution, but i don 't know if this is the right solution.
Turning this parameter ifxIFX_XASPEC to N, make this work. I still think informix guys must fix this problem.
Javier Kusselewski Send private email
Monday, February 08, 2010
 
 

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

Other recent topics Other recent topics