Bug 1304496 - NPE exception is thrown when using jbpm kie ProcessService to issue signal event
NPE exception is thrown when using jbpm kie ProcessService to issue signal event
Status: VERIFIED
Product: JBoss BPMS Platform 6
Classification: JBoss
Component: jBPM Core (Show other bugs)
6.2.0
Unspecified Unspecified
high Severity high
: ER1
: 6.3.0
Assigned To: Maciej Swiderski
Tomas Livora
:
Depends On:
Blocks: 1304508
  Show dependency treegraph
 
Reported: 2016-02-03 15:07 EST by Gary Hu
Modified: 2016-03-18 11:49 EDT (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1304508 (view as bug list)
Environment:
Last Closed:
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Gary Hu 2016-02-03 15:07:26 EST
A NPE exeception is thrown when the following code is used to issue the signal event:
 processService.signalProcessInstance(pi.getId(), ROUTING_EXCEPTION, null);

The stack trace is:

Caused by: java.lang.NullPointerException
	at org.kie.spring.persistence.AbstractKieSpringJpaManager$EmHolderDelegateInvocationHandler.invoke(AbstractKieSpringJpaManager.java:141) [kie-spring-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
	at com.sun.proxy.$Proxy67.joinTransaction(Unknown Source)
	at org.jbpm.process.audit.JPAWorkingMemoryDbLogger.joinTransaction(JPAWorkingMemoryDbLogger.java:246) [jbpm-audit-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
	at org.jbpm.process.audit.JPAWorkingMemoryDbLogger.persist(JPAWorkingMemoryDbLogger.java:195) [jbpm-audit-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
	at org.jbpm.process.audit.JPAWorkingMemoryDbLogger.afterNodeLeft(JPAWorkingMemoryDbLogger.java:120) [jbpm-audit-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
	at org.drools.core.event.ProcessEventSupport.fireAfterNodeLeft(ProcessEventSupport.java:124) [drools-core-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
	at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:375) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
	at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:325) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
	at org.jbpm.workflow.instance.node.ActionNodeInstance.triggerCompleted(ActionNodeInstance.java:61) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
	at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:57) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
	at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173) [jbpm-flow-6.3.0.Final-redhat-5.jar:6.3.0.Final-redhat-5]
	... 50 more


The problem is caused by the current implementation in org.jbpm.kie.services.impl.ProcessServiceImpl.
Note that it disposes the runtime engine after sending the signal event:
      try {
           ksession.signalEvent(signalName, event, processInstanceId);
       } finally {
       	disposeRuntimeEngine(manager, engine);
       }

So the disposeRuntimeEngine needs to be fixed actually on runtime manager level to handle it properly for all possible cases.
Comment 3 Tomas Livora 2016-03-18 11:49:56 EDT
Verified on BPM Suite 6.3.0 ER1

Note You need to log in before you can comment on or make changes to this bug.