java.lang.LinkageError: loader drools/./.JavaDialectRuntimeData$PackageClassLoader): attempted duplicate class definition for name:

52 Views Asked by At

So I am getting the error below when using Drools to evaluate a set of rules [example below] using Stateful kieSessions. This error isn't consistent with it's appearance but it appeared enough times for it to be concerning. We are creating multiple sessions and calling fireAllRules() concurrenlty if that's useful.

Caused by: java.lang.LinkageError: loader (instance of org/drools/core/rule/JavaDialectRuntimeData$PackageClassLoader): attempted duplicate class definition for name: "path/MY_SIMPLE_RULE"
    at "path/MY_SIMPLE_RULE"Eval1InvokerGenerated.evaluate(Unknown Source) ~[?:?]
    at "path/MY_SIMPLE_RULE"Eval1Invoker.evaluate(Unknown Source) ~[?:?]
    at org.drools.core.rule.EvalCondition.isAllowed(EvalCondition.java:118) ~[drools-core-6.3.0.Final.jar:6.3.0.Final]
    at org.drools.core.phreak.PhreakEvalNode.doLeftInserts(PhreakEvalNode.java:70) ~[drools-core-6.3.0.Final.jar:6.3.0.Final]
    at org.drools.core.phreak.PhreakEvalNode.doNode(PhreakEvalNode.java:54) ~[drools-core-6.3.0.Final.jar:6.3.0.Final]
    at org.drools.core.phreak.RuleNetworkEvaluator.evalNode(RuleNetworkEvaluator.java:380) ~[drools-core-6.3.0.Final.jar:6.3.0.Final]
    at org.drools.core.phreak.RuleNetworkEvaluator.innerEval(RuleNetworkEvaluator.java:332) ~[drools-core-6.3.0.Final.jar:6.3.0.Final]
    at org.drools.core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:166) ~[drools-core-6.3.0.Final.jar:6.3.0.Final]
    at org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator.java:123) ~[drools-core-6.3.0.Final.jar:6.3.0.Final]
    at org.drools.core.phreak.RuleExecutor.evaluateNetwork(RuleExecutor.java:65) ~[drools-core-6.3.0.Final.jar:6.3.0.Final]
    at org.drools.core.common.DefaultAgenda.evaluateEagerList(DefaultAgenda.java:1004) ~[drools-core-6.3.0.Final.jar:6.3.0.Final]
    at org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:961) ~[drools-core-6.3.0.Final.jar:6.3.0.Final]
    at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1292) ~[drools-core-6.3.0.Final.jar:6.3.0.Final]

Pseudo Rule

rule "MY_SIMPLE_RULE"
    lock-on-active true
    when
        eval($myAge) == 44);
        eval($myName == "Luffy");
    then
        $title.add("Captain"); 
end

Don't mind the correctness of the rule here because the rules that I am evaluating are reviewed and have been used for several years now. So somewhere down the line we use the kieSession to fireAllRules().

Tried reproducing the error to no avail. So I am not sure what the exact issue is. The problem is the code works for majority of the rules and only broke for a few and those few don't even break all the times. It's sometimes they break, sometimes they do.

0

There are 0 best solutions below