Bug 1228313 - NPE when there's a shared segment in Sequential Mode
Summary: NPE when there's a shared segment in Sequential Mode
Keywords:
Status: CLOSED EOL
Alias: None
Product: JBoss BRMS Platform 6
Classification: Retired
Component: BRE
Version: 6.2.0
Hardware: Unspecified
OS: Unspecified
unspecified
high
Target Milestone: DR1
: 6.2.0
Assignee: Mario Fusco
QA Contact: Marek Winkler
URL:
Whiteboard:
Depends On:
Blocks: 1228551
TreeView+ depends on / blocked
 
Reported: 2015-06-04 15:01 UTC by Mario Fusco
Modified: 2020-03-27 20:11 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
: 1228551 (view as bug list)
Environment:
Last Closed: 2020-03-27 20:11:07 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Mario Fusco 2015-06-04 15:01:04 UTC
When 2 rules share the same segment in sequential mode as in the following example:

rule R1 when
    $s : String()
    $m : Message()
    $i : Integer( this < $s.length )
then
    modify($m) { setMessage($s) };
end

rule R2 when
    $s : String()
    $m : Message()
    $i : Integer( this > $s.length )
then
end

the following NPE can be thrown:

java.lang.NullPointerException
        at org.drools.core.reteoo.BetaNode.getLeftIterator(BetaNode.java:418)
        at org.drools.core.phreak.PhreakJoinNode.doRightUpdates(PhreakJoinNode.java:287)
        at org.drools.core.phreak.PhreakJoinNode.doNode(PhreakJoinNode.java:48)
        at org.drools.core.phreak.RuleNetworkEvaluator.switchOnDoBetaNode(RuleNetworkEvaluator.java:547)
        at org.drools.core.phreak.RuleNetworkEvaluator.evalBetaNode(RuleNetworkEvaluator.java:533)
        at org.drools.core.phreak.RuleNetworkEvaluator.innerEval(RuleNetworkEvaluator.java:334)
        at org.drools.core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:161)
        at org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator.java:116)
        at org.drools.core.phreak.RuleExecutor.evaluateNetwork(RuleExecutor.java:87)
        at org.drools.core.common.DefaultAgenda.evaluateEagerList(DefaultAgenda.java:999)
        at org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:954)
        at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1243)
        at org.drools.core.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:950)
        at org.drools.core.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:924)
        at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:256)
        at org.drools.core.impl.StatelessKnowledgeSessionImpl.execute(StatelessKnowledgeSessionImpl.java:364)

Comment 1 Mario Fusco 2015-06-04 15:06:39 UTC
Fixed by https://github.com/droolsjbpm/drools/commit/87ee53c88

Comment 3 Marek Winkler 2015-10-08 14:46:25 UTC
Verified in BRMS 6.2.0 ER3.


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