sub-process getProcessInstance Invalid session was used for this ProcessInstanceIdContext

150 views
Skip to first unread message

Steven

unread,
Aug 1, 2018, 10:03:38 AM8/1/18
to jBPM Development
master process has a sub-process, the first node of sub-process is an async domain task. but the running of the async workitem's command fails when it attempts to use its kiesession to getProcessInstance(sub-process-instance-id). don't know why JPAProcessInstanceManager.getProcessInstance(JPAProcessInstanceManager.java:107) always try to get the master process instance with the same knowledge runtime as the sub-process. any thought or concerns?

2018-08-01 00:53:29 WARN [SIBJMSRAThreadPool : 0] org.jbpm.executor.impl.AbstractAvailableJobsExecutor Error during command com.pti.fsc.wfe.workitem.handler.async.FscAsyncWorkItemCommand error message Invalid session was used for this context org.kie.internal.runtime.manager.context.ProcessInstanceIdContext@c0c0f06c
java.lang.IllegalStateException: Invalid session was used for this context org.kie.internal.runtime.manager.context.ProcessInstanceIdContext@c0c0f06c
at org.jbpm.runtime.manager.impl.PerProcessInstanceRuntimeManager.validate(PerProcessInstanceRuntimeManager.java:220)
at org.jbpm.persistence.processinstance.JPAProcessInstanceManager.getProcessInstance(JPAProcessInstanceManager.java:107)
at org.jbpm.process.instance.ProcessRuntimeImpl.getProcessInstance(ProcessRuntimeImpl.java:283)
at org.jbpm.process.instance.ProcessRuntimeImpl.getProcessInstance(ProcessRuntimeImpl.java:279)
at org.drools.core.impl.StatefulKnowledgeSessionImpl.getProcessInstance(StatefulKnowledgeSessionImpl.java:1913)
at org.jbpm.persistence.processinstance.JPAProcessInstanceManager.getProcessInstance(JPAProcessInstanceManager.java:155)
at org.jbpm.process.instance.ProcessRuntimeImpl.getProcessInstance(ProcessRuntimeImpl.java:283)
at org.jbpm.process.instance.ProcessRuntimeImpl.getProcessInstance(ProcessRuntimeImpl.java:279)
at org.drools.core.impl.StatefulKnowledgeSessionImpl.getProcessInstance(StatefulKnowledgeSessionImpl.java:1913)
at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.completeWorkItem(JPAWorkItemManager.java:143)
at org.drools.core.command.runtime.process.CompleteWorkItemCommand.execute(CompleteWorkItemCommand.java:75)
at org.drools.core.command.runtime.process.CompleteWorkItemCommand.execute(CompleteWorkItemCommand.java:35)
at org.drools.core.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)
at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41)
at org.drools.persistence.SingleSessionCommandService$TransactionInterceptor.execute(SingleSessionCommandService.java:604)
at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41)
at org.drools.persistence.jpa.OptimisticLockRetryInterceptor.execute(OptimisticLockRetryInterceptor.java:82)
at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41)
at org.drools.persistence.jta.TransactionLockInterceptor.execute(TransactionLockInterceptor.java:73)
at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:397)
at org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession$1.completeWorkItem(CommandBasedStatefulKnowledgeSession.java:166)
at com.pti.fsc.wfe.workitem.handler.async.FscAsyncWorkItemHandlerCmdCallback.onCommandDone(FscAsyncWorkItemHandlerCmdCallback.java:56)
at org.jbpm.executor.impl.AbstractAvailableJobsExecutor.executeGivenJob(AbstractAvailableJobsExecutor.java:166)
at org.jbpm.executor.impl.jms.JmsAvailableJobsExecutor.onMessage(JmsAvailableJobsExecutor.java:47)

Steven

unread,
Aug 1, 2018, 10:05:38 AM8/1/18
to jBPM Development
the version is 6.5.0.Final

Steven

unread,
Aug 1, 2018, 2:39:08 PM8/1/18
to jBPM Development
basically, the same error will be raised when attempting to access sub-process instance sometimes but not always. Sometimes the first try fails, but after seconds the second try works well.

Exception data: java.lang.IllegalStateException: Invalid session was used for this context org.kie.internal.runtime.manager.context.ProcessInstanceIdContext@6e0a9f42
at org.jbpm.runtime.manager.impl.PerProcessInstanceRuntimeManager.validate(PerProcessInstanceRuntimeManager.java:220)
at org.jbpm.persistence.processinstance.JPAProcessInstanceManager.getProcessInstance(JPAProcessInstanceManager.java:107)
at org.jbpm.process.instance.ProcessRuntimeImpl.getProcessInstance(ProcessRuntimeImpl.java:283)
at org.jbpm.process.instance.ProcessRuntimeImpl.getProcessInstance(ProcessRuntimeImpl.java:279)
at org.drools.core.impl.StatefulKnowledgeSessionImpl.getProcessInstance(StatefulKnowledgeSessionImpl.java:1913)
at org.jbpm.persistence.processinstance.JPAProcessInstanceManager.getProcessInstance(JPAProcessInstanceManager.java:155)
at org.jbpm.process.instance.ProcessRuntimeImpl.getProcessInstance(ProcessRuntimeImpl.java:283)
at org.drools.core.impl.StatefulKnowledgeSessionImpl.getProcessInstance(StatefulKnowledgeSessionImpl.java:1936)
at org.drools.core.command.runtime.process.GetProcessInstanceCommand.execute(GetProcessInstanceCommand.java:72)
at org.drools.core.command.runtime.process.GetProcessInstanceCommand.execute(GetProcessInstanceCommand.java:31)
at org.drools.core.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)
at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41)
at org.drools.persistence.SingleSessionCommandService$TransactionInterceptor.execute(SingleSessionCommandService.java:604)
at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41)
at org.drools.persistence.jpa.OptimisticLockRetryInterceptor.execute(OptimisticLockRetryInterceptor.java:82)
at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41)
at org.drools.persistence.jta.TransactionLockInterceptor.execute(TransactionLockInterceptor.java:73)
at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:397)
at org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession.getProcessInstance(CommandBasedStatefulKnowledgeSession.java:134)
at org.jbpm.kie.services.impl.ProcessServiceImpl.getProcessInstanceVariable(ProcessServiceImpl.java:297)

Maciej Swiderski

unread,
Aug 1, 2018, 3:04:46 PM8/1/18
to Steven, jBPM Development
this looks like a consequence of not disposing runtime engine. Whenever you retrieve RuntimeEngine instance form RuntimeManager make sure you dispose it… usually in finally block

Maciej

-- 
You received this message because you are subscribed to the Google Groups "jBPM Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jbpm-developme...@googlegroups.com.
To post to this group, send email to jbpm-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jbpm-development/41f35540-b73d-41bc-bb67-3bf32d454051%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Steven

unread,
Aug 6, 2018, 5:43:16 PM8/6/18
to jBPM Development
Maciej, thanks for your information. Sorry for late response.

I checked all possible codes to make sure to close all RuntimeEngine exactly after using them. Basically I use the jBPM ejb api so jBPM should close them. for the ones i get from RuntimeManager myself, i close them as well. But i still get the same error. 

finally i managed to fix it via providing my own version of JPAProcessInstanceManager: point environment parameter "drools.processInstanceManagerFactory" to my manager factory which produces my version, which in turn extends jBPM original JPAProcessInstanceManager but comment the line 150


Maciej

To unsubscribe from this group and stop receiving emails from it, send an email to jbpm-development+unsub...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages