[jboss-dev-forums] [jBPM Development] - Jbpm 6.0.0.beta2 error disposing ksession when commiting transaction

Pablo Zamudio do-not-reply at jboss.com
Mon Jun 10 17:20:48 EDT 2013


Pablo Zamudio [https://community.jboss.org/people/pzamudio] created the discussion

"Jbpm 6.0.0.beta2 error disposing ksession when commiting transaction"

To view the discussion, visit: https://community.jboss.org/message/822389#822389

--------------------------------------------------------------
We are testing Jbpm 6.0.0.beta2 and we get an error when working inside JBoss7, in a CMT environment. 
We are using a PerRequestRuntimeManager, so with the new apis, in a CMT environment, as soon as the transaction is commited, DisposeSessionTransactionSynchronization should dispose ksession and delete it from database. 
The error happens when the tx sync tries to delete ksession from db, because it tries to join the current transaction, which has been closed, so errors of transaction closed appears.
Looking at tests cases in source code, the test PerRequestRuntimeManagerTest.testCreationOfSessionWithinTransaction() has exactly the problem i am describing. The test gives green results, but in console appears the exceptions as warnings. When running over JBoss7, this exceptions turns to errors, because the server tries to make rollback of the current transaction (which is already commited).

The exact exception in testcase is:
3714 10/06 18:10:23,737[main] WARN  hibernate.ejb.AbstractEntityManagerImpl.joinTransaction  - HHH000326: Cannot join transaction: do not override hibernate.transaction.factory_class
3715 10/06 18:10:23,738[main] WARN  drools.persistence.SingleSessionCommandService.rollbackTransaction  - Could not commit session
javax.persistence.TransactionRequiredException: No active JTA transaction on joinTransaction call
          at org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1223)
          at org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1173)
          at org.drools.persistence.jpa.JpaPersistenceContext.joinTransaction(JpaPersistenceContext.java:42)
          at org.drools.persistence.SingleSessionCommandService.destroy(SingleSessionCommandService.java:428)
          at org.drools.core.command.runtime.DestroySessionCommand.execute(DestroySessionCommand.java:36)
          at org.drools.core.command.runtime.DestroySessionCommand.execute(DestroySessionCommand.java:22)
          at org.drools.core.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)
          at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:347)
          at org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession.destroy(CommandBasedStatefulKnowledgeSession.java:239)
          at org.jbpm.runtime.manager.impl.PerRequestRuntimeManager.disposeRuntimeEngine(PerRequestRuntimeManager.java:52)
          at org.jbpm.runtime.manager.impl.tx.DisposeSessionTransactionSynchronization.afterCompletion(DisposeSessionTransactionSynchronization.java:22)
          at org.drools.persistence.jta.JtaTransactionSynchronizationAdapter.afterCompletion(JtaTransactionSynchronizationAdapter.java:22)
          at bitronix.tm.BitronixTransaction.fireAfterCompletionEvent(BitronixTransaction.java:497)
          at bitronix.tm.BitronixTransaction.commit(BitronixTransaction.java:244)
          at bitronix.tm.BitronixTransactionManager.commit(BitronixTransactionManager.java:120)
          at org.jbpm.runtime.manager.PerRequestRuntimeManagerTest.testCreationOfSessionWithinTransaction(PerRequestRuntimeManagerTest.java:158)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:601)
          at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
          at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
          at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
          at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
          at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
          at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
          at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:69)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:48)
          at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
          at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
          at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
          at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
          at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
          at org.junit.runners.ParentRunner.run(ParentRunner.java:292)
          at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
          at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
3717 10/06 18:10:23,740[main] WARN  persistence.jta.JtaTransactionManager.rollback  - Unable to rollback transaction
java.lang.IllegalStateException: transaction is done, cannot change its status
          at bitronix.tm.BitronixTransaction.setRollbackOnly(BitronixTransaction.java:291)
          at bitronix.tm.BitronixTransactionManager.setRollbackOnly(BitronixTransactionManager.java:150)
          at org.drools.persistence.jta.JtaTransactionManager.rollback(JtaTransactionManager.java:201)
          at org.drools.persistence.SingleSessionCommandService.rollbackTransaction(SingleSessionCommandService.java:405)
          at org.drools.persistence.SingleSessionCommandService.destroy(SingleSessionCommandService.java:439)
          at org.drools.core.command.runtime.DestroySessionCommand.execute(DestroySessionCommand.java:36)
          at org.drools.core.command.runtime.DestroySessionCommand.execute(DestroySessionCommand.java:22)
          at org.drools.core.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)
          at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:347)
          at org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession.destroy(CommandBasedStatefulKnowledgeSession.java:239)
          at org.jbpm.runtime.manager.impl.PerRequestRuntimeManager.disposeRuntimeEngine(PerRequestRuntimeManager.java:52)
          at org.jbpm.runtime.manager.impl.tx.DisposeSessionTransactionSynchronization.afterCompletion(DisposeSessionTransactionSynchronization.java:22)
          at org.drools.persistence.jta.JtaTransactionSynchronizationAdapter.afterCompletion(JtaTransactionSynchronizationAdapter.java:22)
          at bitronix.tm.BitronixTransaction.fireAfterCompletionEvent(BitronixTransaction.java:497)
          at bitronix.tm.BitronixTransaction.commit(BitronixTransaction.java:244)
          at bitronix.tm.BitronixTransactionManager.commit(BitronixTransactionManager.java:120)
          at org.jbpm.runtime.manager.PerRequestRuntimeManagerTest.testCreationOfSessionWithinTransaction(PerRequestRuntimeManagerTest.java:158)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:601)
          at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
          at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
          at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
          at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
          at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
          at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
          at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:69)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:48)
          at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
          at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
          at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
          at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
          at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
          at org.junit.runners.ParentRunner.run(ParentRunner.java:292)
          at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
          at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
3718 10/06 18:10:23,741[main] ERROR drools.persistence.SingleSessionCommandService.rollbackTransaction  - Could not rollback
java.lang.RuntimeException: Unable to rollback transaction
          at org.drools.persistence.jta.JtaTransactionManager.rollback(JtaTransactionManager.java:205)
          at org.drools.persistence.SingleSessionCommandService.rollbackTransaction(SingleSessionCommandService.java:405)
          at org.drools.persistence.SingleSessionCommandService.destroy(SingleSessionCommandService.java:439)
          at org.drools.core.command.runtime.DestroySessionCommand.execute(DestroySessionCommand.java:36)
          at org.drools.core.command.runtime.DestroySessionCommand.execute(DestroySessionCommand.java:22)
          at org.drools.core.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)
          at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:347)
          at org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession.destroy(CommandBasedStatefulKnowledgeSession.java:239)
          at org.jbpm.runtime.manager.impl.PerRequestRuntimeManager.disposeRuntimeEngine(PerRequestRuntimeManager.java:52)
          at org.jbpm.runtime.manager.impl.tx.DisposeSessionTransactionSynchronization.afterCompletion(DisposeSessionTransactionSynchronization.java:22)
          at org.drools.persistence.jta.JtaTransactionSynchronizationAdapter.afterCompletion(JtaTransactionSynchronizationAdapter.java:22)
          at bitronix.tm.BitronixTransaction.fireAfterCompletionEvent(BitronixTransaction.java:497)
          at bitronix.tm.BitronixTransaction.commit(BitronixTransaction.java:244)
          at bitronix.tm.BitronixTransactionManager.commit(BitronixTransactionManager.java:120)
          at org.jbpm.runtime.manager.PerRequestRuntimeManagerTest.testCreationOfSessionWithinTransaction(PerRequestRuntimeManagerTest.java:158)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:601)
          at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
          at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
          at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
          at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
          at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
          at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
          at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:69)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:48)
          at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
          at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
          at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
          at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
          at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
          at org.junit.runners.ParentRunner.run(ParentRunner.java:292)
          at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
          at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.IllegalStateException: transaction is done, cannot change its status
          at bitronix.tm.BitronixTransaction.setRollbackOnly(BitronixTransaction.java:291)
          at bitronix.tm.BitronixTransactionManager.setRollbackOnly(BitronixTransactionManager.java:150)
          at org.drools.persistence.jta.JtaTransactionManager.rollback(JtaTransactionManager.java:201)
          ... 39 more
3721 10/06 18:10:23,744[main] WARN  drools.persistence.SingleSessionCommandService.rollbackTransaction  - Could not commit session
java.lang.IllegalStateException: Illegal method call. This session was previously disposed.
          at org.drools.core.reteoo.DisposedReteooWorkingMemory.getId(DisposedReteooWorkingMemory.java:97)
          at org.drools.core.impl.StatefulKnowledgeSessionImpl.getId(StatefulKnowledgeSessionImpl.java:140)
          at org.drools.core.command.runtime.GetIdCommand.execute(GetIdCommand.java:41)
          at org.drools.core.command.runtime.GetIdCommand.execute(GetIdCommand.java:28)
          at org.drools.core.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)
          at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:376)
          at org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession.getId(CommandBasedStatefulKnowledgeSession.java:106)
          at org.jbpm.runtime.manager.PerRequestRuntimeManagerTest.testCreationOfSessionWithinTransaction(PerRequestRuntimeManagerTest.java:163)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:601)
          at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
          at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
          at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
          at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
          at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
          at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
          at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:69)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:48)
          at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
          at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
          at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
          at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
          at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
          at org.junit.runners.ParentRunner.run(ParentRunner.java:292)
          at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
          at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
3722 10/06 18:10:23,745[main] WARN  bitronix.tm.BitronixTransaction.fireAfterCompletionEvent  - Synchronization.afterCompletion() call failed for org.drools.persistence.jta.JtaTransactionSynchronizationAdapter at 117efa0
java.lang.IllegalStateException: Illegal method call. This session was previously disposed.
          at org.drools.core.reteoo.DisposedReteooWorkingMemory.getProcessRuntime(DisposedReteooWorkingMemory.java:261)
          at org.drools.core.impl.StatefulKnowledgeSessionImpl.getProcessRuntime(StatefulKnowledgeSessionImpl.java:868)
          at org.drools.persistence.SingleSessionCommandService$SynchronizationImpl.afterCompletion(SingleSessionCommandService.java:485)
          at org.drools.persistence.jta.JtaTransactionSynchronizationAdapter.afterCompletion(JtaTransactionSynchronizationAdapter.java:25)
          at bitronix.tm.BitronixTransaction.fireAfterCompletionEvent(BitronixTransaction.java:497)
          at bitronix.tm.BitronixTransaction.rollback(BitronixTransaction.java:283)
          at bitronix.tm.BitronixTransactionManager.rollback(BitronixTransactionManager.java:129)
          at org.drools.persistence.jta.JtaTransactionManager.rollback(JtaTransactionManager.java:199)
          at org.drools.persistence.SingleSessionCommandService.rollbackTransaction(SingleSessionCommandService.java:405)
          at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:384)
          at org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession.getId(CommandBasedStatefulKnowledgeSession.java:106)
          at org.jbpm.runtime.manager.PerRequestRuntimeManagerTest.testCreationOfSessionWithinTransaction(PerRequestRuntimeManagerTest.java:163)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:601)
          at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
          at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
          at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
          at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
          at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
          at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
          at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:69)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:48)
          at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
          at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
          at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
          at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
          at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
          at org.junit.runners.ParentRunner.run(ParentRunner.java:292)
          at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
          at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
          at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/822389#822389]

Start a new discussion in jBPM Development at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2035]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-dev-forums/attachments/20130610/1b555fd2/attachment-0001.html 


More information about the jboss-dev-forums mailing list