users@glassfish.java.net

XAER_RMFAIL: ...global transaction is in the NON-EXISTING state

From: <glassfish_at_javadesktop.org>
Date: Fri, 24 Apr 2009 00:57:53 PDT

Hi!

Since yesterday I got this strange error:
[code]
[#|2009-04-24T09:16:49.974+0200|WARNING|sun-appserver9.1|javax.enterprise.system.core.transaction|_ThreadID=19;_ThreadName=p: thread-pool-1; w: 3;_RequestID=31b87a6b-4adc-43b0-8701-196a3d1ae793;|JTS5054: Unexpected error occurred in after completion
java.lang.RuntimeException: Got exception during XAResource.end: com.mysql.jdbc.jdbc2.optional.MysqlXAException: XAER_RMFAIL: The command cannot be executed when global transaction is in the NON-EXISTING state
        at com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.delistResource(J2EETransactionManagerOpt.java:224)
        at com.sun.enterprise.resource.ResourceManagerImpl.unregisterResource(ResourceManagerImpl.java:265)
        at com.sun.enterprise.resource.ResourceManagerImpl.delistResource(ResourceManagerImpl.java:223)
        at com.sun.enterprise.resource.PoolManagerImpl.resourceClosed(PoolManagerImpl.java:400)
        at com.sun.enterprise.resource.ConnectorAllocator$ConnectionListenerImpl.connectionClosed(ConnectorAllocator.java:72)
        at com.sun.gjc.spi.ManagedConnection.connectionClosed(ManagedConnection.java:638)
        at com.sun.gjc.spi.base.ConnectionHolder.close(ConnectionHolder.java:201)
        at com.sun.gjc.spi.jdbc40.ConnectionHolder40.close(ConnectionHolder40.java:519)
        at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.closeDatasourceConnection(DatabaseAccessor.java:394)
        at oracle.toplink.essentials.internal.databaseaccess.DatasourceAccessor.closeConnection(DatasourceAccessor.java:382)
        at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.closeConnection(DatabaseAccessor.java:417)
        at oracle.toplink.essentials.internal.databaseaccess.DatasourceAccessor.afterJTSTransaction(DatasourceAccessor.java:115)
        at oracle.toplink.essentials.threetier.ClientSession.afterTransaction(ClientSession.java:119)
        at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.afterTransaction(UnitOfWorkImpl.java:1838)
        at oracle.toplink.essentials.transaction.AbstractSynchronizationListener.afterCompletion(AbstractSynchronizationListener.java:170)
        at oracle.toplink.essentials.transaction.JTASynchronizationListener.afterCompletion(JTASynchronizationListener.java:102)
        at com.sun.jts.jta.SynchronizationImpl.after_completion(SynchronizationImpl.java:154)
        at com.sun.jts.CosTransactions.RegisteredSyncs.distributeAfter(RegisteredSyncs.java:210)
        at com.sun.jts.CosTransactions.TopCoordinator.afterCompletion(TopCoordinator.java:2585)
        at com.sun.jts.CosTransactions.CoordinatorTerm.commit(CoordinatorTerm.java:433)
        at com.sun.jts.CosTransactions.TerminatorImpl.commit(TerminatorImpl.java:249)
        at com.sun.jts.CosTransactions.CurrentImpl.commit(CurrentImpl.java:623)
        at com.sun.jts.jta.TransactionManagerImpl.commit(TransactionManagerImpl.java:309)
        at com.sun.enterprise.distributedtx.J2EETransactionManagerImpl.commit(J2EETransactionManagerImpl.java:1030)
        at com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.commit(J2EETransactionManagerOpt.java:397)
        at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3792)
        at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3585)
        at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1354)
        at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1316)
        at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:205)
        at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:127)
        at $Proxy53.otherFunctionOfOtherBean(Unknown Source)
        at my.package.MyClass.myFunction(MyClass.java:343)
[/code]

Any idea what is going wrong?

"MyClass" is a stateless bean. "OtherBean" is a stateless bean, too. And "otherFunctionOfOtherBean" is marked with "@TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW)"

Is this a glassfish problem or could be this a MySQL only problem?

There seams to be some issues withs MySQL:
 * http://src.opensolaris.org/source/xref/webstack/webstack/trunk/src/mysql-5.0.33.64bit/mysql-test/r/xa.result?&r=1
 * http://bugs.mysql.com/bug.php?id=17343
 * http://jira.codehaus.org/browse/BTM-15
 * http://forums.mysql.com/read.php?39,97767,97767
 * http://forums.mysql.com/read.php?132,230918,230918

Any hint is welcome
[Message sent by forum member 'hegalor' (hegalor)]

http://forums.java.net/jive/thread.jspa?messageID=343485