Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

7
  • What language? Also keep in mind that some cycles might be valid recursive calls. The key is determining if there is an end condition that eventually prevents future recursion, i.e. stopping an infinite cycle.
    – user22815
    Commented Jan 24, 2017 at 18:50
  • Language is Java, the logic is in Drools. We have event listeners that capture all rules that fire and these have access to the facts that were associated with the rules firing Commented Jan 24, 2017 at 20:18
  • 1
    Is there a reason you can't keep track of the stack depth and abort after it goes deep enough?
    – Doval
    Commented Jan 24, 2017 at 21:35
  • @Doval do you mean the actual Java stack or the number of calls to rules? When a loop occurs, it usually occurs with some set of rules firing repeatedly without ever hitting a Java stack limit, in those cases we will just time out. But we want to be able to detect the loops before we time out since timing out can take a long time. Commented Jan 24, 2017 at 22:45
  • 1
    This type of cycle detection or avoidance should be built into the rules environment. It has all the information needed to detect cycles internally. Commented Jan 26, 2017 at 5:52