So you are saying that repeated runs with the same data livelock
somewhere in a rule's RHS but always in a different one?
Yeah there isn't a specific constellation of conditions, but the conclusion is always
the same.
And it works if I run the rule separately, only getting this random occurrence in my
multi-threaded environment.
Do the thread dumps have something in common, e.g., calls to some
org.drools.util.CompositeClassLoader method?
Well the thread dumps looks always exactly the same (except for the rule name).
So it's always the same code part I think, which causes the spinlock.
-B
----- Ursprüngliche Mail -----
Von: "Wolfgang Laun" <wolfgang.laun(a)gmail.com>
An: "Rules Users List" <rules-users(a)lists.jboss.org>
Gesendet: Dienstag, 16. Juli 2013 16:59:11
Betreff: Re: [rules-users] Getting infinite loops even with limitation of fires
So you are saying that repeated runs with the same data livelock
somewhere in a rule's RHS but always in a different one? Do the thread
dumps have something in common, e.g., calls to some
org.drools.util.CompositeClassLoader method? (There was an issue with
class loading but I can't remember the details or version.)
-W
On 16/07/2013, Bojan Janisch <bojan.janisch(a)scai.fraunhofer.de> wrote:
Hey Wolfgang,
I thinks it's an infinite loop because the thread dump is always the same,
doesn't matter when I look. The thread is running, not waiting or blocked
which means that there has to be a spinlock that keeps the thread at the
current position. And because this thing runs for almost 1 hour now I think
it is an infinite loop.
Do you have another idea why a thread should run for an endless time always
at the same code segment if not because of an infinite loop?
Greetings
Bojan
----- Ursprüngliche Mail -----
Von: "Wolfgang Laun" <wolfgang.laun(a)gmail.com>
An: "Rules Users List" <rules-users(a)lists.jboss.org>
Gesendet: Dienstag, 16. Juli 2013 11:55:48
Betreff: Re: [rules-users] Getting infinite loops even with limitation
of fires
Running longer than expected may not be due to overshooting the limit
for fired rules. Monitoring firings using a listener and registering
and counting where what actually happens is paramount.
How do you determine that there is in endless loop?
-W
On 16/07/2013, Bojan Janisch <bojan.janisch(a)scai.fraunhofer.de> wrote:
> Hello everyone,
>
> Recently I'm using Drools in a multithreaded environment. But after a
> while
> I see that Drools is running for endless time even though I gave him with
> fireAllRules(1000) a limitation to fire only 1000 rules. The occurrence is
> rule-independent, I've checked multiple times and each time it's another
> rule which works well if I run it separately.
>
> Could someone check the code of this stack trace? That's a thread dump of
> my
> last run.
>
> "ECJ Evaluation Thread 9" daemon prio=10 tid=0x00002b08a4fd9000 nid=0x2f90
> runnable [0x00002b08a9a82000]
> java.lang.Thread.State: RUNNABLE
> at java.util.HashMap.getEntry(HashMap.java:347)
> at java.util.HashMap.containsKey(HashMap.java:335)
> at
>
org.drools.util.CompositeClassLoader$CachingLoader.load(CompositeClassLoader.java:244)
> at
>
org.drools.util.CompositeClassLoader$CachingLoader.load(CompositeClassLoader.java:237)
> at
> org.drools.util.CompositeClassLoader.loadClass(CompositeClassLoader.java:88)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
> at
>
defaultpkg.Rule_308_7dd58592a49c4dd1a6fd98dc64c74466DefaultConsequenceInvokerGenerated.evaluate(Unknown
> Source)
> at
>
defaultpkg.Rule_308_7dd58592a49c4dd1a6fd98dc64c74466DefaultConsequenceInvoker.evaluate(Unknown
> Source)
> at
> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)
> - locked <0x000000020865c080> (a org.drools.common.DefaultAgenda)
> at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1221)
> at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1456)
> at
> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710)
> at
> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:679)
> at
>
org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:234)
> at rulevolution.RulEvolution.runDrools(RulEvolution.java:348)
> at rulevolution.RulEvolution.evaluate(RulEvolution.java:183)
> at ec.simple.SimpleEvaluator.evalPopChunk(SimpleEvaluator.java:259)
> at
> ec.simple.SimpleEvaluator$SimpleEvaluatorThreadCG.run(SimpleEvaluator.java:341)
> at ec.util.ThreadPool$PoolThread.run(ThreadPool.java:57)
>
> Locked ownable synchronizers:
> - None
>
> Also here the rule and code snipped I'm using to prove that the infinite
> loop does not come from my code:
>
> //kSession is a StatefulKnowledgeSession
> try {
> //Limiting the Activation will prevent infinite loops
> kSession.fireAllRules(1000);
> } catch (Exception e) {
> System.out.println("error while processing :: " + e.toString());
> System.out.println(rule);
> } finally {
> kSession.dispose();
> }
> -------------------------------------------------------------------
> rule "308"
> no-loop
> when
>
> $0:NormalizedNamedEntity(
> ct_0:CoveredText,
> cp_0:Concept,
> label_0:getConcept().getPrefLabel().value,
> getConcept().identifierSource.toLowerCase.contains("ops"))
>
> $1:NormalizedNamedEntity(
> ct_1:CoveredText,
> cp_1:Concept,
> label_1:getConcept().getPrefLabel().value,
> getConcept().identifierSource.toLowerCase.contains("bodyside"))
>
> then
> int start = getStart($0,$1);
> int ende = getStop($0,$1);
> String attribute = label_0+" "+label_1;
> insert(annotate(aJCas, "Operation", 309, attribute, start, ende,
"",
> attribute));
> end
>
> I appreciate any help to solve this occurrence.
>
> Greetings
>
> Bojan
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users