[jboss-jira] [JBoss JIRA] (DROOLS-81) Drools freezes during execution

Mario Fusco (JIRA) jira-events at lists.jboss.org
Wed Nov 13 04:30:07 EST 2013


     [ https://issues.jboss.org/browse/DROOLS-81?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mario Fusco resolved DROOLS-81.
-------------------------------

    Fix Version/s: 5.5.1.Final
                   6.0.1.Final
       Resolution: Done


I fixed this in mvel by synchronizing those WeakHashMaps. The fix will be available starting from mvel 2.1.8.Final
                
> Drools freezes during execution
> -------------------------------
>
>                 Key: DROOLS-81
>                 URL: https://issues.jboss.org/browse/DROOLS-81
>             Project: Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 5.5.0.Final
>            Reporter: Andrew kelly
>            Assignee: Mario Fusco
>             Fix For: 5.5.1.Final, 6.0.1.Final
>
>
> When Drools is being run to process rules on a number of threads on occasion the rules engine freezes with the stack trace below and does not complete. There are a number of other threads that are also frozen out waiting to lock 0x00002aab9d4caf58:
> Frozen Thread
> "pool-3-thread-8" prio=10 tid=0x00002ab53d16e000 nid=0x1c29 runnable [0x0000000049fc7000]
>    java.lang.Thread.State: RUNNABLE
> 	at java.util.WeakHashMap.expungeStaleEntries(WeakHashMap.java:408)
> 	- locked \<0x00002aab9d4caf58\> (a java.lang.ref.ReferenceQueue)
> 	at java.util.WeakHashMap.getTable(WeakHashMap.java:417)
> 	at java.util.WeakHashMap.get(WeakHashMap.java:464)
> 	at org.mvel2.util.ParseTools.getBestCandidate(ParseTools.java:241)
> 	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:1039)
> 	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:987)
> 	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:377)
> 	at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:143)
> 	at org.mvel2.ast.ASTNode.optimize(ASTNode.java:159)
> 	at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:115)
> 	at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
> 	at org.mvel2.compiler.CompiledExpression.getDirectValue(CompiledExpression.java:123)
> 	at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:119)
> 	at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:113)
> 	at org.mvel2.MVEL.executeExpression(MVEL.java:930)
> 	at org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:104)
> 	at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)
> 	- locked \<0x00002aaec5b1b160\> (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:674)
> 	at com.iontrading.arc.liquidityrules.engine.BatchRulesEngine.processAll(BatchRulesEngine.java:64)
> 	at com.iontrading.arc.liquidityrules.api.rulestoresource.AbstractRuleStoreSourceService.performBaselineProcessing(AbstractRuleStoreSourceService.java:860)
> 	at com.rbc.erm.rulestoresource.RuleStoreSourceService.access$600(RuleStoreSourceService.java:32)
> 	at com.rbc.erm.rulestoresource.RuleStoreSourceService$RuleStoreProcess.call(RuleStoreSourceService.java:66)
> 	at com.rbc.erm.rulestoresource.RuleStoreSourceService$RuleStoreProcess.call(RuleStoreSourceService.java:38)
> 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> 	at java.lang.Thread.run(Thread.java:722)
> Example of other frozen threads:
> "pool-3-thread-9" prio=10 tid=0x00002ab53d16f800 nid=0x1c2a waiting for monitor entry [0x000000004a0c9000]
>    java.lang.Thread.State: BLOCKED (on object monitor)
>  at java.util.WeakHashMap.expungeStaleEntries(WeakHashMap.java:386)
>  - waiting to lock \<0x00002aab9d4caf58\> (a java.lang.ref.ReferenceQueue)
>  at java.util.WeakHashMap.getTable(WeakHashMap.java:417)
>  at java.util.WeakHashMap.get(WeakHashMap.java:464)
>  at org.mvel2.util.ParseTools.getBestCandidate(ParseTools.java:241)
>  at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:1039)
>  at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:987)
>  at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:377)
>  at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:143)
>  at org.mvel2.ast.ASTNode.optimize(ASTNode.java:159)
>  at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:115)
>  at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
>  at org.mvel2.compiler.CompiledExpression.getDirectValue(CompiledExpression.java:123)
>  at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:119)
>  at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:113)
>  at org.mvel2.MVEL.executeExpression(MVEL.java:930)
>  at org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:104)
>  at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)
>  - locked \<0x00002aaeedca2870\> (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:674)
>  at com.iontrading.arc.liquidityrules.engine.BatchRulesEngine.processAll(BatchRulesEngine.java:64)
>  at com.rbc.erm.rulestoresource.RuleStoreSourceService.performViewProcessing(RuleStoreSourceService.java:133)
>  at com.rbc.erm.rulestoresource.RuleStoreSourceService$RuleStoreProcess.call(RuleStoreSourceService.java:78)
>  at com.rbc.erm.rulestoresource.RuleStoreSourceService$RuleStoreProcess.call(RuleStoreSourceService.java:38)
>  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>  at java.util.concurrent.FutureTask.run(FutureTask.java:166)
>  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>  at java.lang.Thread.run(Thread.java:722)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list