Hi,
Multible threads I guess.
The commit at the start seems unrelated to the
exception in enlistResource().
The first exception seems OK to me. This is what JTA
mandates when attempting to enlist an XA resource
with a transaction that has been rolled back.
The second exception is worse.
Looking at the Minerva source for
XAConnectionFactory.prepareObject(), the state of the
transaction is checked before the resource is enlisted.
Problem with this is that there is a possible race with
transaction timeout, and I suspect this is what happened
here. (Check log prior to snippet below to verify.)
Not sure exactly what is the right thing to do to
avoid this. Probably javax.transaction.RollbackException
should be caught and handled like no transaction is
active.
Also I am not sure why there is a lot of transaction
timeouts afterwards. Could be that one of the
interceptors is left in an unstable state after the
RuntimeException happened.
Hope this helps.
Best Regards,
Ole Husgaard.
Daniel Schulze wrote:
>
> Folks,
>
> jBoss did quit his job after the following stack trace.
>
> Has anybody an idea what hangs here?!
>
> \Daniel
>
> -----------8<---------------------------------------------------
>
> [nextgen.EnterpriseEntity] EntityBean.ejbPostCreate(daniel_97_16) called
> [nextgen.EnterpriseEntity] &&&&&&&&&&&&&&&& EJBObject found in ejbPostCreate id is
>daniel_97_16
> [nextgen.EnterpriseEntity] TxCapsule.registerSynchronization(): Entered,
>status=STATUS_ACTIVE
> [nextgen.EnterpriseEntity] TxCapsule.commit(): Entered, status=STATUS_ACTIVE
> [nextgen.EnterpriseEntity] TxCapsule.commit(): Before completion done,
>status=STATUS_ACTIVE
> [nextgen.EnterpriseEntity] TxCapsule.commit(): One resource.
> [nextgen.EnterpriseEntity] TxCapsule.commitResources(): resourceStates[0]=3
> [nextgen.EnterpriseEntity] TxCapsule.commit(): Committed OK.
> [nextgen.EnterpriseEntity] TxCapsule.enlistResource(): Entered,
>status=STATUS_ROLLEDBACK
> [nextgen.EnterpriseEntity] EntityBean.setSessionContext() called
> [nextgen.EnterpriseEntity] javax.transaction.RollbackException: Already rolled back.
> [nextgen.EnterpriseEntity] at
>org.jboss.tm.TxCapsule.enlistResource(TxCapsule.java:525)
> [nextgen.EnterpriseEntity] at
>org.jboss.tm.TransactionImpl.enlistResource(TransactionImpl.java:114)
> [nextgen.EnterpriseEntity] at
>org.jboss.minerva.factories.XAConnectionFactory.prepareObject(XAConnectionFactory.java:215)
> [nextgen.EnterpriseEntity] at
>org.jboss.minerva.pools.ObjectPool.getObject(ObjectPool.java:530)
> [nextgen.EnterpriseEntity] at
>org.jboss.minerva.datasource.XAPoolDataSource.getConnection(XAPoolDataSource.java:169)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.plugins.jaws.jdbc.JDBCCommand.getConnection(JDBCCommand.java:573)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.plugins.jaws.jdbc.JDBCCommand.jdbcExecute(JDBCCommand.java:146)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.plugins.jaws.jdbc.JDBCCreateEntityCommand.execute(JDBCCreateEntityCommand.java:135)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.plugins.jaws.JAWSPersistenceManager.createEntity(JAWSPersistenceManager.java:122)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.plugins.CMPPersistenceManager.createEntity(CMPPersistenceManager.java:154)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.EntityContainer.createHome(EntityContainer.java:427)
> [nextgen.EnterpriseEntity] at java.lang.reflect.Method.invoke(Native Method)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityContainer.java:585)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySynchronizationInterceptor.java:191)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:85)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT.java:135)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:263)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:86)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:122)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:106)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.EntityContainer.invokeHome(EntityContainer.java:309)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invokeHome(JRMPContainerInvoker.java:207)
> [nextgen.EnterpriseEntity] at
>org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invokeHome(JRMPContainerInvoker.java:153)
> [nextgen.EnterpriseEntity] at java.lang.reflect.Method.invoke(Native Method)
> [nextgen.EnterpriseEntity] at sun.rmi.server.UnicastServerRef.dispatch(Unknown
>Source)
> [nextgen.EnterpriseEntity] at sun.rmi.transport.Transport$1.run(Unknown Source)
> [nextgen.EnterpriseEntity] at
>java.security.AccessController.doPrivileged(Native Method)
> [nextgen.EnterpriseEntity] at sun.rmi.transport.Transport.serviceCall(Unknown
>Source)
> [nextgen.EnterpriseEntity] at
>sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
> [nextgen.EnterpriseEntity] at
>sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(UnknownSource)
> [nextgen.EnterpriseEntity] at java.lang.Thread.run(Unknown Source)
> [JAWS] java.lang.RuntimeException: Unable to register with TransactionManager:
>javax.transaction.RollbackException: Already rolled back.
> [JAWS] at
>org.jboss.minerva.factories.XAConnectionFactory.prepareObject(XAConnectionFactory.java:223)
> [JAWS] at org.jboss.minerva.pools.ObjectPool.getObject(ObjectPool.java:530)
> [JAWS] at
>org.jboss.minerva.datasource.XAPoolDataSource.getConnection(XAPoolDataSource.java:169)
> [JAWS] at
>org.jboss.ejb.plugins.jaws.jdbc.JDBCCommand.getConnection(JDBCCommand.java:573)
> [JAWS] at
>org.jboss.ejb.plugins.jaws.jdbc.JDBCCommand.jdbcExecute(JDBCCommand.java:146)
> [JAWS] at
>org.jboss.ejb.plugins.jaws.jdbc.JDBCCreateEntityCommand.execute(JDBCCreateEntityCommand.java:135)
> [JAWS] at
>org.jboss.ejb.plugins.jaws.JAWSPersistenceManager.createEntity(JAWSPersistenceManager.java:122)
> [JAWS] at
>org.jboss.ejb.plugins.CMPPersistenceManager.createEntity(CMPPersistenceManager.java:154)
> [JAWS] at org.jboss.ejb.EntityContainer.createHome(EntityContainer.java:427)
> [JAWS] at java.lang.reflect.Method.invoke(Native Method)
> [JAWS] at
>org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityContainer.java:585)
> [JAWS] at
>org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySynchronizationInterceptor.java:191)
> [JAWS] at
>org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:85)
> [JAWS] at
>org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT.java:135)
> [JAWS] at
>org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:263)
> [JAWS] at
>org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:86)
> [JAWS] at
>org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:122)
> [JAWS] at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:106)
> [JAWS] at org.jboss.ejb.EntityContainer.invokeHome(EntityContainer.java:309)
> [JAWS] at
>org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invokeHome(JRMPContainerInvoker.java:207)
> [JAWS] at
>org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invokeHome(JRMPContainerInvoker.java:153)
> [JAWS] at java.lang.reflect.Method.invoke(Native Method)
> [JAWS] at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
> [JAWS] at sun.rmi.transport.Transport$1.run(Unknown Source)
> [JAWS] at java.security.AccessController.doPrivileged(Native Method)
> [JAWS] at sun.rmi.transport.Transport.serviceCall(Unknown Source)
> [JAWS] at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
> [JAWS] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
> [JAWS] at java.lang.Thread.run(Unknown Source)
> [nextgen.EnterpriseEntity] Transaction XidImpl:telkel/290675 timed out.
> [nextgen.EnterpriseEntity] Transaction XidImpl:telkel/290676 timed out.
> [nextgen.EnterpriseEntity] Transaction XidImpl:telkel/290677 timed out.
> [nextgen.EnterpriseEntity] Transaction XidImpl:telkel/290678 timed out.
> [nextgen.EnterpriseEntity] Transaction XidImpl:telkel/290679 timed out.
> [nextgen.EnterpriseEntity] Transaction XidImpl:telkel/290680 timed out.
> [nextgen.EnterpriseEntity] Transaction XidImpl:telkel/290681 timed out.