Uploaded image for project: 'jBPM'
  1. jBPM
  2. JBPM-4764

NPE on fact delete after conditional event using RuleAwareProcessEventLister

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • jBPM 6.3.0.Final
    • jBPM 6.3.0.CR2
    • Runtime Engine
    • None
    • NEW
    • NEW

    Description

      NPE is thrown from drools when:

      • process that uses conditional event that relies on process instance as condition
      • uses RuleAwareProcessEventLister to automatically insert and delete process instance from working memory

      same happens on fact update

      org.jbpm.workflow.instance.WorkflowRuntimeException: [IntermediateCatchEvent:1 - EndProcess:4] -- null
      	at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:179)
      	at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:366)
      	at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:325)
      	at org.jbpm.workflow.instance.node.ActionNodeInstance.triggerCompleted(ActionNodeInstance.java:61)
      	at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:57)
      	at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173)
      	at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:366)
      	at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:381)
      	at org.jbpm.workflow.instance.node.StateNodeInstance.activationCreated(StateNodeInstance.java:156)
      	at org.jbpm.workflow.instance.node.StateNodeInstance.signalEvent(StateNodeInstance.java:103)
      	at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:490)
      	at org.jbpm.process.instance.event.DefaultSignalManager.internalSignalEvent(DefaultSignalManager.java:82)
      	at org.jbpm.process.instance.event.DefaultSignalManager$SignalAction.execute(DefaultSignalManager.java:181)
      	at org.drools.core.phreak.SynchronizedBypassPropagationList$1.execute(SynchronizedBypassPropagationList.java:31)
      	at org.drools.core.common.DefaultAgenda.executeTask(DefaultAgenda.java:1343)
      	at org.drools.core.phreak.SynchronizedBypassPropagationList.addEntry(SynchronizedBypassPropagationList.java:28)
      	at org.drools.core.impl.StatefulKnowledgeSessionImpl.addPropagation(StatefulKnowledgeSessionImpl.java:1989)
      	at org.drools.core.impl.StatefulKnowledgeSessionImpl.queueWorkingMemoryAction(StatefulKnowledgeSessionImpl.java:1548)
      	at org.jbpm.process.instance.event.DefaultSignalManager.signalEvent(DefaultSignalManager.java:73)
      	at org.jbpm.process.instance.ProcessRuntimeImpl$2.matchCreated(ProcessRuntimeImpl.java:446)
      	at org.drools.core.event.AgendaEventSupport.fireActivationCreated(AgendaEventSupport.java:58)
      	at org.drools.core.phreak.PhreakRuleTerminalNode.doLeftTupleInsert(PhreakRuleTerminalNode.java:110)
      	at org.drools.core.phreak.PhreakRuleTerminalNode.doLeftInserts(PhreakRuleTerminalNode.java:84)
      	at org.drools.core.phreak.PhreakRuleTerminalNode.doNode(PhreakRuleTerminalNode.java:57)
      	at org.drools.core.phreak.RuleNetworkEvaluator.innerEval(RuleNetworkEvaluator.java:318)
      	at org.drools.core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:166)
      	at org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator.java:123)
      	at org.drools.core.phreak.RuleExecutor.evaluateNetwork(RuleExecutor.java:65)
      	at org.drools.core.common.DefaultAgenda.addEagerRuleAgendaItem(DefaultAgenda.java:273)
      	at org.drools.core.reteoo.PathMemory.queueRuleAgendaItem(PathMemory.java:152)
      	at org.drools.core.reteoo.PathMemory.doLinkRule(PathMemory.java:120)
      	at org.drools.core.reteoo.PathMemory.linkSegment(PathMemory.java:94)
      	at org.drools.core.reteoo.SegmentMemory.notifyRuleLinkSegment(SegmentMemory.java:185)
      	at org.drools.core.reteoo.SegmentMemory.linkNode(SegmentMemory.java:147)
      	at org.drools.core.reteoo.BetaMemory.linkNode(BetaMemory.java:93)
      	at org.drools.core.reteoo.BetaNode.assertObject(BetaNode.java:289)
      	at org.drools.core.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:60)
      	at org.drools.core.reteoo.AlphaNode.assertObject(AlphaNode.java:145)
      	at org.drools.core.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:60)
      	at org.drools.core.reteoo.ObjectTypeNode.propagateAssert(ObjectTypeNode.java:298)
      	at org.drools.core.phreak.PropagationEntry$Insert.execute(PropagationEntry.java:93)
      	at org.drools.core.phreak.SynchronizedBypassPropagationList$1.execute(SynchronizedBypassPropagationList.java:31)
      	at org.drools.core.common.DefaultAgenda.executeTask(DefaultAgenda.java:1343)
      	at org.drools.core.phreak.SynchronizedBypassPropagationList.addEntry(SynchronizedBypassPropagationList.java:28)
      	at org.drools.core.impl.StatefulKnowledgeSessionImpl.addPropagation(StatefulKnowledgeSessionImpl.java:1989)
      	at org.drools.core.reteoo.EntryPointNode.assertObject(EntryPointNode.java:224)
      	at org.drools.core.common.NamedEntryPoint.insert(NamedEntryPoint.java:277)
      	at org.drools.core.common.NamedEntryPoint.insert(NamedEntryPoint.java:237)
      	at org.drools.core.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:1465)
      	at org.drools.core.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:1420)
      	at org.jbpm.bpmn2.IntermediateEventTest.testIntermediateCatchEventConditionSetVariableAfter(IntermediateEventTest.java:2468)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	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.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      	at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
      	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
      	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.junit.runners.ParentRunner.run(ParentRunner.java:309)
      	at org.junit.runners.Suite.runChild(Suite.java:127)
      	at org.junit.runners.Suite.runChild(Suite.java:26)
      	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.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      	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.NullPointerException
      	at org.drools.core.phreak.RuleNetworkEvaluator.deleteLeftChild(RuleNetworkEvaluator.java:742)
      	at org.drools.core.phreak.PhreakJoinNode.doLeftDeletes(PhreakJoinNode.java:401)
      	at org.drools.core.phreak.PhreakJoinNode.doNode(PhreakJoinNode.java:48)
      	at org.drools.core.phreak.RuleNetworkEvaluator.switchOnDoBetaNode(RuleNetworkEvaluator.java:543)
      	at org.drools.core.phreak.RuleNetworkEvaluator.evalBetaNode(RuleNetworkEvaluator.java:529)
      	at org.drools.core.phreak.RuleNetworkEvaluator.innerEval(RuleNetworkEvaluator.java:336)
      	at org.drools.core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:166)
      	at org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator.java:123)
      	at org.drools.core.phreak.RuleExecutor.evaluateNetwork(RuleExecutor.java:65)
      	at org.drools.core.common.DefaultAgenda.addEagerRuleAgendaItem(DefaultAgenda.java:273)
      	at org.drools.core.reteoo.PathMemory.queueRuleAgendaItem(PathMemory.java:152)
      	at org.drools.core.reteoo.PathMemory.doLinkRule(PathMemory.java:120)
      	at org.drools.core.reteoo.PathMemory.linkSegment(PathMemory.java:94)
      	at org.drools.core.reteoo.SegmentMemory.notifyRuleLinkSegment(SegmentMemory.java:185)
      	at org.drools.core.reteoo.SegmentMemory.notifyRuleLinkSegment(SegmentMemory.java:178)
      	at org.drools.core.reteoo.LeftInputAdapterNode$LiaNodeMemory.setNodeDirty(LeftInputAdapterNode.java:579)
      	at org.drools.core.reteoo.LeftInputAdapterNode.doDeleteSegmentMemory(LeftInputAdapterNode.java:298)
      	at org.drools.core.reteoo.LeftInputAdapterNode.doDeleteObject(LeftInputAdapterNode.java:265)
      	at org.drools.core.reteoo.LeftInputAdapterNode.retractLeftTuple(LeftInputAdapterNode.java:360)
      	at org.drools.core.reteoo.ObjectTypeNode.doRetractObject(ObjectTypeNode.java:334)
      	at org.drools.core.reteoo.ObjectTypeNode.retractObject(ObjectTypeNode.java:317)
      	at org.drools.core.reteoo.EntryPointNode.propagateRetract(EntryPointNode.java:358)
      	at org.drools.core.phreak.PropagationEntry$Delete.execute(PropagationEntry.java:172)
      	at org.drools.core.phreak.SynchronizedBypassPropagationList$1.execute(SynchronizedBypassPropagationList.java:31)
      	at org.drools.core.common.DefaultAgenda.executeTask(DefaultAgenda.java:1343)
      	at org.drools.core.phreak.SynchronizedBypassPropagationList.addEntry(SynchronizedBypassPropagationList.java:28)
      	at org.drools.core.impl.StatefulKnowledgeSessionImpl.addPropagation(StatefulKnowledgeSessionImpl.java:1989)
      	at org.drools.core.reteoo.EntryPointNode.retractObject(EntryPointNode.java:346)
      	at org.drools.core.common.NamedEntryPoint.delete(NamedEntryPoint.java:537)
      	at org.drools.core.common.NamedEntryPoint.delete(NamedEntryPoint.java:500)
      	at org.drools.core.impl.StatefulKnowledgeSessionImpl.delete(StatefulKnowledgeSessionImpl.java:1500)
      	at org.drools.core.impl.StatefulKnowledgeSessionImpl.delete(StatefulKnowledgeSessionImpl.java:1491)
      	at org.jbpm.process.instance.event.listeners.RuleAwareProcessEventLister.afterProcessCompleted(RuleAwareProcessEventLister.java:61)
      	at org.drools.core.event.ProcessEventSupport.fireAfterProcessCompleted(ProcessEventSupport.java:76)
      	at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.setState(WorkflowProcessInstanceImpl.java:364)
      	at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.setState(WorkflowProcessInstanceImpl.java:384)
      	at org.jbpm.workflow.instance.node.EndNodeInstance.internalTrigger(EndNodeInstance.java:67)
      	at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173)
      	... 87 more
      
      
      

      Attachments

        Activity

          People

            mfusco@redhat.com Mario Fusco
            swiderski.maciej Maciej Swiderski (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: