[jboss-jira] [JBoss JIRA] (DROOLS-1472) NPE in stateful session
Michael Neifeld (JIRA)
issues at jboss.org
Thu Mar 9 07:54:00 EST 2017
[ https://issues.jboss.org/browse/DROOLS-1472?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13375313#comment-13375313 ]
Michael Neifeld commented on DROOLS-1472:
-----------------------------------------
I just walk through the stack trace and have found:
{code:java}
// Some comments here
private static TupleSets<LeftTuple> getTargetStagedLeftTuples(NetworkNode node, InternalWorkingMemory wm, SegmentMemory smem) {
if (node == smem.getTipNode()) {
// we are about to process the segment tip, allow it to merge insert/update/delete clashes
if ( smem.isEmpty() ) {
SegmentUtilities.createChildSegments(wm, smem, ((LeftTupleSource) node).getSinkPropagator() );
}
return smem.getFirst().getStagedLeftTuples().takeAll();
} else {
return null;
}
}
{code}
in class org.drools.core.phreak.RuleNetworkEvaluator.
the method was invoked on line 298
{code:java}
stagedLeftTuples = getTargetStagedLeftTuples(node, wm, smem);
LeftTupleSinkNode sink = ((LeftTupleSource) node).getSinkPropagator().getFirstLeftTupleSink();
trgTuples = evalNode( pmem, node, bit, nodeMem, smems, smemIndex, wm, stack, processRian, executor, srcTuples, smem, stagedLeftTuples, sink );
if ( trgTuples == null ) {
break; // Queries exists and has been placed StackEntry, and there are no current trgTuples to process
}
{code}
and if the method will return null we will fail with NPE.
> NPE in stateful session
> ------------------------
>
> Key: DROOLS-1472
> URL: https://issues.jboss.org/browse/DROOLS-1472
> Project: Drools
> Issue Type: Bug
> Components: core engine
> Affects Versions: 6.5.0.Final
> Environment: RedHat 6.2, Java 8.102
> Reporter: Michael Neifeld
> Assignee: Mario Fusco
> Priority: Critical
>
> Found NPE in a log that probably leads to session destroying.
> CEP works in multithreaded environment and there are almost always 16 drools-workers thread.
> 2017-03-05 16:30:58 com.mot.ssol.cep.workflow.CEPSession [ERROR] Session execution error occurred
> java.lang.NullPointerException: null
> at org.drools.core.phreak.RuleNetworkEvaluator.deleteChildLeftTuple(RuleNetworkEvaluator.java:729) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.phreak.RuleNetworkEvaluator.unlinkAndDeleteChildLeftTuple(RuleNetworkEvaluator.java:721) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.phreak.PhreakNotNode.doRightUpdates(PhreakNotNode.java:343) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.phreak.PhreakNotNode.doNode(PhreakNotNode.java:74) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.phreak.RuleNetworkEvaluator.switchOnDoBetaNode(RuleNetworkEvaluator.java:524) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.phreak.RuleNetworkEvaluator.evalBetaNode(RuleNetworkEvaluator.java:505) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.phreak.RuleNetworkEvaluator.evalNode(RuleNetworkEvaluator.java:341) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.phreak.RuleNetworkEvaluator.innerEval(RuleNetworkEvaluator.java:301) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:136) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.phreak.AddRemoveRule.forceFlushLeftTuple(AddRemoveRule.java:686) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.phreak.AddRemoveRule.flushLeftTupleIfNecessary(AddRemoveRule.java:629) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.reteoo.LeftInputAdapterNode.doInsertSegmentMemory(LeftInputAdapterNode.java:225) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.reteoo.LeftInputAdapterNode.doInsertObject(LeftInputAdapterNode.java:210) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:169) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:63) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.reteoo.AlphaNode.assertObject(AlphaNode.java:134) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:494) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:384) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.reteoo.AlphaNode.assertObject(AlphaNode.java:134) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:494) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:384) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.reteoo.AlphaNode.assertObject(AlphaNode.java:134) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:494) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:384) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.reteoo.ObjectTypeNode.propagateAssert(ObjectTypeNode.java:304) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.phreak.PropagationEntry$Insert.execute(PropagationEntry.java:134) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.phreak.SynchronizedPropagationList.flush(SynchronizedPropagationList.java:86) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.phreak.SynchronizedPropagationList.flush(SynchronizedPropagationList.java:81) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.impl.StatefulKnowledgeSessionImpl.flushPropagations(StatefulKnowledgeSessionImpl.java:2105) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.common.DefaultAgenda.fireLoop(DefaultAgenda.java:1296) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.common.DefaultAgenda.fireUntilHalt(DefaultAgenda.java:1232) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireUntilHalt(StatefulKnowledgeSessionImpl.java:1398) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireUntilHalt(StatefulKnowledgeSessionImpl.java:1377) ~[drools-core-6.5.0.Final.jar:6.5.0.Final]
> at com.mot.ssol.cep.workflow.CEPSession.run(CEPSession.java:121) ~[mimonitor-cepm-3.0.jar:3.0]
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_102]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_102]
> at java.lang.Thread.run(Thread.java:745) [na:1.8.0_102]
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
More information about the jboss-jira
mailing list