Bug 1228551

Summary: [GSS] (6.1.z) NPE when there's a shared segment in Sequential Mode
Product: [Retired] JBoss BRMS Platform 6 Reporter: Anton Giertli <agiertli>
Component: BREAssignee: Mario Fusco <mfusco>
Status: CLOSED EOL QA Contact: Marek Winkler <mwinkler>
Severity: high Docs Contact:
Priority: unspecified    
Version: 6.2.0CC: agiertli, lpetrovi, mbaluch, mfusco, mwinkler
Target Milestone: CR1   
Target Release: 6.1.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 1228313 Environment:
Last Closed: 2020-03-27 20:08:18 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1228313    
Bug Blocks: 1230818, 1230825    

Description Anton Giertli 2015-06-05 07:39:39 UTC
+++ This bug was initially created as a clone of Bug #1228313 +++

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)

--- Additional comment from Mario Fusco on 2015-06-04 11:06:39 EDT ---

Fixed by https://github.com/droolsjbpm/drools/commit/87ee53c88

--- Additional comment from JBoss Product and Program Management on 2015-06-04 11:10:18 EDT ---

Since this issue was entered in Red Hat Bugzilla, the release flag has been
set to ? to ensure that it is properly evaluated for this release.

Comment 2 Mario Fusco 2015-06-29 08:56:18 UTC
Fix cherry-picked to 6.2.x with https://github.com/droolsjbpm/drools/commit/5f409382d4bda19e2f193be7beefe64fd5d66de2

Comment 3 Marek Winkler 2015-07-10 11:15:14 UTC
Verified in BRMS 6.1.2.CR1.