Uploaded image for project: 'Drools'
  1. Drools
  2. DROOLS-623

Rule with NOT causes excessive firing of the rule

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 6.2.0.CR1
    • 6.1.0.Final, 6.2.0.Beta1
    • None
    • Hide

      Please use the attached unit test case for reproducing.

      Show
      Please use the attached unit test case for reproducing.
    • Low

    Description

      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.

      Attachments

        Activity

          People

            mfusco@redhat.com Mario Fusco
            Anantjot.Anand Anantjot Anand (Inactive)
            Votes:
            3 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: