Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-4672

Possible trouble of exception cause during error of 2PC

XMLWordPrintable

      I have test scenario where crash recovery of transaction is tested. I have two XA resources which process commit - meaning to 2PC. Sometimes during the commit connection to database is put down which causes the 2PC does not finish successfully.

      1. Enlist Test XA
      2. Enlist DB XA
      3. Prepare Test XA
      4. Prepare DB XA
      5. Commit Test XA
      6. Connection to DB is interrupted/closed
      7. Commit DB XA
      8. Exception is thrown and got by client

      There is issue in type of transaction that is returned back to client.

      For EAP6 it was (for JTA)
      java.rmi.RemoteException caused by javax.ejb.EJBException caused by javax.transaction.HeuristicMixedException

      If user does txn.commit() (or container did it on itself when CMT is used) and the problem described above occurs then user can got cause information that transaction failed as heuristic.

      For WFLY the situation changed. I can see that exception in the server.log is enhanced by suppressed exception and this one is returned as cause to client.

      The example of such exception stack trace is here

      2015-05-25 13:36:41,226 ERROR [org.jboss.as.ejb3.invocation] (EJB default - 4) WFLYEJB0034: EJB Invocation failed on component JPACrashBean for method public abstract void org.jboss.as.test.jbossts.crashrec.jpa.JPACrashBeanRemote.testXA(java.lang.String,java.lang.String) throws java.rmi.RemoteException,javax.naming.NamingException: javax.ejb.EJBException: javax.transaction.HeuristicMixedException
       at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleEndTransactionException(CMTTxInterceptor.java:138)
       at org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:119)
       at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:279)
       at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:327)
       at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:239)
       at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
       at org.jboss.as.ejb3.remote.EJBRemoteTransactionPropagatingInterceptor.processInvocation(EJBRemoteTransactionPropagatingInterceptor.java:79)
       at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
       at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
       at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
       at org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:43)
       at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
       at org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:100)
       at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
       at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64)
       at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
       at org.jboss.as.ejb3.deployment.processors.EjbSuspendInterceptor.processInvocation(EjbSuspendInterceptor.java:53)
       at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
       at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:66)
       at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
       at org.jboss.as.ejb3.component.interceptors.EjbExceptionTransformingInterceptorFactories$1.processInvocation(EjbExceptionTransformingInterceptorFactories.java:75)
       at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
       at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
       at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
       at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:54)
       at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
       at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64)
       at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
       at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356)
       at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:635)
       at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61)
       at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
       at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356)
       at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80)
       at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
       at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
       at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:195)
       at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.invokeMethod(MethodInvocationMessageHandler.java:331)
       at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.access$100(MethodInvocationMessageHandler.java:69)
       at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler$1.run(MethodInvocationMessageHandler.java:202)
       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
       at java.lang.Thread.run(Thread.java:745)
       at org.jboss.threads.JBossThread.run(JBossThread.java:320)
      Caused by: javax.transaction.HeuristicMixedException
       at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1206)
       at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:126)
       at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:89)
       at org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:91)
       ... 44 more
       Suppressed: org.postgresql.xa.PGXAException: Error committing prepared transaction
        at org.postgresql.xa.PGXAConnection.commitPrepared(PGXAConnection.java:511)
        at org.postgresql.xa.PGXAConnection.commit(PGXAConnection.java:434)
        at org.jboss.jca.adapters.jdbc.xa.XAManagedConnection.commit(XAManagedConnection.java:338)
        at org.jboss.jca.core.tx.jbossts.XAResourceWrapperImpl.commit(XAResourceWrapperImpl.java:107)
        at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelCommit(XAResourceRecord.java:476)
        at com.arjuna.ats.arjuna.coordinator.BasicAction.doCommit(BasicAction.java:2889)
        at com.arjuna.ats.arjuna.coordinator.BasicAction.doCommit(BasicAction.java:2805)
        at com.arjuna.ats.arjuna.coordinator.BasicAction.phase2Commit(BasicAction.java:1874)
        at com.arjuna.ats.arjuna.coordinator.BasicAction.End(BasicAction.java:1549)
        at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:96)
        at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:162)
        at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1200)
        ... 47 more
       Caused by: org.postgresql.util.PSQLException: This connection has been closed.
        at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:843)
        at org.postgresql.jdbc2.AbstractJdbc2Connection.setAutoCommit(AbstractJdbc2Connection.java:785)
        at org.postgresql.xa.PGXAConnection.commitPrepared(PGXAConnection.java:506)
        ... 58 more
      

      But client gets
      java.rmi.RemoteException caused by java.lang.ClassNotFoundException: org.postgresql.xa.PGXAException

      The full client exception stack trace is

      INFO  [org.jboss.as.test.jbossts.base.TestBaseOneServer] (main) Failure expected: java.rmi.RemoteException: Error; nested exception is: 
       java.lang.ClassNotFoundException: org.postgresql.xa.PGXAException
       at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:236)
       at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:183)
       at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:146)
       at com.sun.proxy.$Proxy39.testXA(Unknown Source)
       at org.jboss.as.test.jbossts.crashrec.test.JPACrashRecoveryTestCase.callCrashTest(JPACrashRecoveryTestCase.java:192)
       at org.jboss.as.test.jbossts.base.TestBaseOneServer.execute(TestBaseOneServer.java:368)
       at org.jboss.as.test.jbossts.crashrec.test.JPAProxyCrashRecoveryTestCase.commitHaltTestWithReturn(JPAProxyCrashRecoveryTestCase.java:921)
       at org.jboss.as.test.jbossts.crashrec.test.JPAProxyCrashRecoveryTestCase.commitHaltRev(JPAProxyCrashRecoveryTestCase.java:429)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:497)
       at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
       at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
       at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
       at org.jboss.arquillian.junit.Arquillian$8$1.invoke(Arquillian.java:370)
       at org.jboss.arquillian.container.test.impl.execution.LocalTestExecuter.execute(LocalTestExecuter.java:60)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:497)
       at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
       at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
       at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
       at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:145)
       at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:116)
       at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67)
       at org.jboss.arquillian.container.test.impl.execution.ClientTestExecuter.execute(ClientTestExecuter.java:53)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:497)
       at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
       at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
       at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
       at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createContext(ContainerEventController.java:142)
       at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createTestContext(ContainerEventController.java:129)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:497)
       at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
       at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
       at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:92)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:497)
       at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
       at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
       at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:73)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:497)
       at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
       at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
       at org.jboss.arquillian.test.impl.TestContextHandler.createTestContext(TestContextHandler.java:130)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:497)
       at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
       at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
       at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:145)
       at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.test(EventTestRunnerAdaptor.java:136)
       at org.jboss.arquillian.junit.Arquillian$8.evaluate(Arquillian.java:363)
       at org.jboss.arquillian.junit.Arquillian$4.evaluate(Arquillian.java:245)
       at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:422)
       at org.jboss.arquillian.junit.Arquillian.access$200(Arquillian.java:54)
       at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:259)
       at org.jboss.as.test.jbossts.junit.JUnitRuleProcessAnnotation$1.evaluate(JUnitRuleProcessAnnotation.java:72)
       at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
       at org.jboss.as.test.jbossts.junit.JUnitRuleProcessAnnotation$1.evaluate(JUnitRuleProcessAnnotation.java:72)
       at org.junit.rules.RunRules.evaluate(RunRules.java:20)
       at org.jboss.arquillian.junit.Arquillian$7$1.invoke(Arquillian.java:315)
       at org.jboss.arquillian.container.test.impl.execution.ClientBeforeAfterLifecycleEventExecuter.execute(ClientBeforeAfterLifecycleEventExecuter.java:99)
       at org.jboss.arquillian.container.test.impl.execution.ClientBeforeAfterLifecycleEventExecuter.on(ClientBeforeAfterLifecycleEventExecuter.java:72)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:497)
       at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
       at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
       at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
       at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createContext(ContainerEventController.java:142)
       at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createBeforeContext(ContainerEventController.java:124)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:497)
       at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
       at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
       at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:92)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:497)
       at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
       at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
       at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:73)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:497)
       at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
       at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
       at org.jboss.arquillian.test.impl.TestContextHandler.createTestContext(TestContextHandler.java:130)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:497)
       at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
       at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
       at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:145)
       at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:116)
       at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.fireCustomLifecycle(EventTestRunnerAdaptor.java:159)
       at org.jboss.arquillian.junit.Arquillian$7.evaluate(Arquillian.java:311)
       at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
       at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
       at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
       at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
       at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
       at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
       at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
       at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:204)
       at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:422)
       at org.jboss.arquillian.junit.Arquillian.access$200(Arquillian.java:54)
       at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:218)
       at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
       at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:166)
       at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:275)
       at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173)
       at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:149)
       at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128)
       at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)
       at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)
       at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
      Caused by: java.lang.ClassNotFoundException: org.postgresql.xa.PGXAException
       at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
       at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
       at java.lang.Class.forName0(Native Method)
       at java.lang.Class.forName(Class.java:348)
       at org.jboss.marshalling.AbstractClassResolver.loadClass(AbstractClassResolver.java:131)
       at org.jboss.marshalling.AbstractClassResolver.resolveClass(AbstractClassResolver.java:112)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadClassDescriptor(RiverUnmarshaller.java:948)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1255)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:276)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:224)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadCollectionObject(RiverUnmarshaller.java:180)
       at org.jboss.marshalling.river.RiverUnmarshaller.readCollectionData(RiverUnmarshaller.java:776)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:652)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:224)
       at org.jboss.marshalling.river.RiverUnmarshaller.readFields(RiverUnmarshaller.java:1745)
       at org.jboss.marshalling.river.RiverObjectInputStream.defaultReadObject(RiverObjectInputStream.java:81)
       at java.lang.Throwable.readObject(Throwable.java:914)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:497)
       at org.jboss.marshalling.reflect.SerializableClass.callReadObject(SerializableClass.java:307)
       at org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1637)
       at org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1606)
       at org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1606)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1285)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:276)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:224)
       at org.jboss.marshalling.river.RiverUnmarshaller.readFields(RiverUnmarshaller.java:1745)
       at org.jboss.marshalling.river.RiverObjectInputStream.defaultReadObject(RiverObjectInputStream.java:81)
       at java.lang.Throwable.readObject(Throwable.java:914)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:497)
       at org.jboss.marshalling.reflect.SerializableClass.callReadObject(SerializableClass.java:307)
       at org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1637)
       at org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1606)
       at org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1606)
       at org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1606)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1285)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:276)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:224)
       at org.jboss.marshalling.river.RiverUnmarshaller.readFields(RiverUnmarshaller.java:1745)
       at org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1658)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1285)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:276)
       at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
       at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:41)
       at org.jboss.ejb.client.remoting.InvocationExceptionResponseHandler$MethodInvocationExceptionResultProducer.getResult(InvocationExceptionResponseHandler.java:79)
       at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:276)
       at org.jboss.ejb.client.EJBObjectInterceptor.handleInvocationResult(EJBObjectInterceptor.java:64)
       at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:290)
       at org.jboss.ejb.client.EJBHomeInterceptor.handleInvocationResult(EJBHomeInterceptor.java:88)
       at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:290)
       at org.jboss.ejb.client.TransactionInterceptor.handleInvocationResult(TransactionInterceptor.java:46)
       at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:290)
       at org.jboss.ejb.client.ReceiverInterceptor.handleInvocationResult(ReceiverInterceptor.java:129)
       at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:265)
       at org.jboss.ejb.client.EJBClientInvocationContext.awaitResponse(EJBClientInvocationContext.java:453)
       at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:204)
       ... 138 more
      

      The issue that I can see here (or at least it seems to me so) is that client does not have chance to find out what is the outcome of the commit operation. I mean the outcome is error but there is no details like if it was Heuristic outcome and what kind of it (http://docs.oracle.com/javaee/6/api/javax/transaction/UserTransaction.html#commit%28%29).

              dlloyd@redhat.com David Lloyd
              ochaloup@redhat.com Ondrej Chaloupka (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: