Uploaded image for project: 'JBoss BPMS Platform'
  1. JBoss BPMS Platform
  2. RHBPMS-979

[GSS](6.2.z) Drools execution stuck due to infinite loop

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Critical Critical
    • 6.2.1
    • 6.2.0
    • BRE
    • None

      Description of problem:
      Executing a process with multiple BusinessRulesTask is getting stuck in an infinite loop.

      A sucessfully validated DRL is executed by a jbpm process . The execution stops at the node where the business rule task should be executed; the java process consumes all available CPU time and the BPM Suite execution is not possible for any other process.

      If the complete DRL is used, the behaviour desribed above occurs. If one of the rules is ommitted, the rule execution works! Here is a simplified version of those rules:

      rule r1 ruleflow-group "group1"
      salience 100
      when
      $person: Person( $addressList : addresses )
      Address( zipCode == "10243" ) from $addressList
      $cheese : Cheese( )
      then
      System.out.println("r1 executed");
      end

      rule r2 ruleflow-group "group1"
      salience 5
      when
      $person: Person( $addressList : addresses )
      Address( zipCode == "10318" ) from $addressList
      $cheese : Cheese( )
      then
      System.out.println("r2 executed");
      end

      Note the usage of the 'from' keyword. Its usage with very similar fact attributes seems to confuse the whole evaluation algorithm.

      We have simulated the problem in a unit test and have found that the evaluation of rules repeatedly (infinited) executes the method org.drools.core.reteoo.FromNode.createPeer()

      https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/core/reteoo/FromNode.java#L208

      Taking a heap dump after the infinite loop is entered showed a huge number of FromNodeLeftTuple instances.

      Version-Release number of selected component (if applicable):

      How reproducible:
      Always

      Steps to Reproduce:
      1. See reproducer

      Actual results:
      Drools enters an infinite loop

      Expected results:
      Process and rules execution finishes normally

      Additional info:
      This is fixed by the changes related to DROOLS-992:
      https://issues.jboss.org/browse/DROOLS-992
      https://github.com/droolsjbpm/drools/commit/13bb9a748d5af562e334e499937e772a1c2774a5

              mfusco@redhat.com Mario Fusco
              rhn-support-mputz Martin Weiler (Inactive)
              Marek Winkler Marek Winkler (Inactive)
              Marek Winkler Marek Winkler (Inactive)
              Alessandro Lazarotti, Lukáš Petrovický (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: