[
https://issues.jboss.org/browse/DROOLS-1472?page=com.atlassian.jira.plugi...
]
Mario Fusco commented on DROOLS-1472:
-------------------------------------
Those {code}stagedLeftTuples{code} are supposed to be used only at the border of 2
segments of the phreak network and then only if the node is the tip of the segment. In all
other case that object shouldn't be dereferenced and when this happens we want to fail
fast with a NPE instead of "hiding the dust under the carpet" with a null check
and propagate later an error that will be then much harder to track. Now the question is:
why in your case drools is trying to use that object even when it shouldn't? This is
clearly a bug, but as I said it's quite impossible for me to investigate it without a
chance to reproduce it.
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)