]
Mario Fusco resolved DROOLS-623.
--------------------------------
Labels: backport-to-6.0.x (was: )
Fix Version/s: 6.2.0.CR1
Resolution: Done
Fixed by
Rule with NOT causes excessive firing of the rule
-------------------------------------------------
Key: DROOLS-623
URL:
https://issues.jboss.org/browse/DROOLS-623
Project: Drools
Issue Type: Bug
Affects Versions: 6.1.0.Final, 6.2.0.Beta1
Reporter: Anantjot Anand
Assignee: Mario Fusco
Labels: backport-to-6.0.x
Fix For: 6.2.0.CR1
Attachments: TestNotSubnetworkIssue.java
Debugging of the issue points to De-Activation not able to happen due to RuleExecutor not
set dirty upon the call made to BetaNode [line: 369] - doDeleteRightTuple(RightTuple,
InternalWorkingMemory, BetaMemory) during reEvaluateNetwork after first time fire of the
rule. Further drilling into doDeleteRightTuple indicates memory.unlinkNode(wm) call fails
in
PathMemory.unlinkedSegment as it finds the isRuleLinked() to be false.
if (linkedRule && !isRuleLinked()) {
doUnlinkRule(wm);
}
Please see the attached junit test case reproducing the issue. There are two rules R1 and
R2. R1 sets up criteria needed by R2.
There are two changes that make this issue not appear.
1) Setting the value required by (inside the NOT clause) rule before calling
fireAllRules.
2) Removing the NOT clause from R2.