-
Bug
-
Resolution: Unresolved
-
Minor
-
None
-
5.5.1.Final
-
None
-
None
AccumulateNode throws a NPE when events are inserted too quickly via an entry-point. A stateful knowledge session to which events are inserted and running an accumulate on the input events. I have a for loop generating the events and inserting them as rapidly as possible. In the rules I use an accumulator to calculate the average of the values contained within the events. The behavior I'm observing is that if I insert ~120 events without any waiting I receive an NPE. If I Thread.sleep for even just 1ms the test goes off without a hitch.
The NPE is as follows:
Exception in thread "main" java.lang.NullPointerException
at org.drools.reteoo.AccumulateNode.getFirstMatch(AccumulateNode.java:1050)
at org.drools.reteoo.AccumulateNode.modifyLeftTuple(AccumulateNode.java:345)
at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateModifyChildLeftTuple(SingleLeftTupleSinkAdapter.java:259)
at org.drools.reteoo.AccumulateNode.evaluateResultConstraints(AccumulateNode.java:676)
at org.drools.reteoo.ReteooWorkingMemory$EvaluateResultConstraints.execute(ReteooWorkingMemory.java:590)
at org.drools.common.PropagationContextImpl.evaluateActionQueue(PropagationContextImpl.java:350)
at org.drools.rule.SlidingLengthWindow.assertFact(SlidingLengthWindow.java:119)
at org.drools.rule.BehaviorManager.assertFact(BehaviorManager.java:94)
at org.drools.reteoo.WindowNode.assertObject(WindowNode.java:167)
at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:497)
at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:382)
at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:235)
at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:240)
at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:350)
at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:311)
at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:127)
at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:55)
at drools5fusioneval.Average.main(Average.java:66)