[jboss-jira] [JBoss JIRA] (DROOLS-411) Memory leak in nurse rostering example for dataset medium01, due to a bug in Drools

Geoffrey De Smet (JIRA) issues at jboss.org
Wed Jan 22 05:16:29 EST 2014


    [ https://issues.jboss.org/browse/DROOLS-411?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12937815#comment-12937815 ] 

Geoffrey De Smet commented on DROOLS-411:
-----------------------------------------

Another dataset, sprint01_1week.xml (use import button to get it) suffers from this problem too, but it's hard to notice because it takes a very long time to OOM in that case.

This means that it's possible that the other datasets suffer from it too, making it not so rare...
                
> Memory leak in nurse rostering example for dataset medium01, due to a bug in Drools
> -----------------------------------------------------------------------------------
>
>                 Key: DROOLS-411
>                 URL: https://issues.jboss.org/browse/DROOLS-411
>             Project: Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 6.0.1.Final
>            Reporter: Geoffrey De Smet
>            Assignee: Mario Fusco
>         Attachments: memory_leak_nurse_rostering.png, memory_leak_nurse_rostering1.png
>
>
> See screenshots
> Eventually leads to (but that stacktrace is misleading to the true case):
> {code}
> java.lang.OutOfMemoryError: GC overhead limit exceeded
> 	at org.drools.core.reteoo.NotNode.createLeftTuple(NotNode.java:127) ~[drools-core-6.1.0-20140109.225128-430.jar:6.1.0-SNAPSHOT]
> 	at org.drools.core.phreak.PhreakJoinNode.doRightInserts(PhreakJoinNode.java:152) ~[drools-core-6.1.0-20140109.225128-430.jar:6.1.0-SNAPSHOT]
> 	at org.drools.core.phreak.PhreakJoinNode.doNode(PhreakJoinNode.java:56) ~[drools-core-6.1.0-20140109.225128-430.jar:6.1.0-SNAPSHOT]
> 	at org.drools.core.phreak.RuleNetworkEvaluator.switchOnDoBetaNode(RuleNetworkEvaluator.java:547) ~[drools-core-6.1.0-20140109.225128-430.jar:6.1.0-SNAPSHOT]
> 	at org.drools.core.phreak.RuleNetworkEvaluator.evalBetaNode(RuleNetworkEvaluator.java:533) ~[drools-core-6.1.0-20140109.225128-430.jar:6.1.0-SNAPSHOT]
> 	at org.drools.core.phreak.RuleNetworkEvaluator.innerEval(RuleNetworkEvaluator.java:334) ~[drools-core-6.1.0-20140109.225128-430.jar:6.1.0-SNAPSHOT]
> 	at org.drools.core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:161) ~[drools-core-6.1.0-20140109.225128-430.jar:6.1.0-SNAPSHOT]
> 	at org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator.java:116) ~[drools-core-6.1.0-20140109.225128-430.jar:6.1.0-SNAPSHOT]
> 	at org.drools.core.phreak.RuleExecutor.reEvaluateNetwork(RuleExecutor.java:200) ~[drools-core-6.1.0-20140109.225128-430.jar:6.1.0-SNAPSHOT]
> 	at org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:67) ~[drools-core-6.1.0-20140109.225128-430.jar:6.1.0-SNAPSHOT]
> 	at org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:935) ~[drools-core-6.1.0-20140109.225128-430.jar:6.1.0-SNAPSHOT]
> 	at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1200) ~[drools-core-6.1.0-20140109.225128-430.jar:6.1.0-SNAPSHOT]
> 	at org.drools.core.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:958) ~[drools-core-6.1.0-20140109.225128-430.jar:6.1.0-SNAPSHOT]
> 	at org.drools.core.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:932) ~[drools-core-6.1.0-20140109.225128-430.jar:6.1.0-SNAPSHOT]
> 	at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:232) ~[drools-core-6.1.0-20140109.225128-430.jar:6.1.0-SNAPSHOT]
> 	at org.optaplanner.core.impl.score.director.drools.DroolsScoreDirector.calculateScore(DroolsScoreDirector.java:98) ~[classes/:na]
> 	at org.optaplanner.core.impl.solver.scope.DefaultSolverScope.calculateScore(DefaultSolverScope.java:101) ~[classes/:na]
> 	at org.optaplanner.core.impl.phase.AbstractSolverPhaseScope.calculateScore(AbstractSolverPhaseScope.java:124) ~[classes/:na]
> 	at org.optaplanner.core.impl.localsearch.decider.LocalSearchDecider.processMove(LocalSearchDecider.java:147) ~[classes/:na]
> 	at org.optaplanner.core.impl.localsearch.decider.LocalSearchDecider.doMove(LocalSearchDecider.java:134) ~[classes/:na]
> 	at org.optaplanner.core.impl.localsearch.decider.LocalSearchDecider.decideNextStep(LocalSearchDecider.java:107) ~[classes/:na]
> 	at org.optaplanner.core.impl.localsearch.DefaultLocalSearchSolverPhase.solve(DefaultLocalSearchSolverPhase.java:62) ~[classes/:na]
> 	at org.optaplanner.core.impl.solver.DefaultSolver.runSolverPhases(DefaultSolver.java:190) ~[classes/:na]
> 	at org.optaplanner.core.impl.solver.DefaultSolver.solve(DefaultSolver.java:155) ~[classes/:na]
> 	at org.optaplanner.examples.common.business.SolutionBusiness.solve(SolutionBusiness.java:268) ~[classes/:na]
> 	at org.optaplanner.examples.common.swingui.SolverAndPersistenceFrame$SolveAction$1.run(SolverAndPersistenceFrame.java:278) ~[classes/:na]
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) ~[na:1.7.0_25]
> 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) ~[na:1.7.0_25]
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:166) ~[na:1.7.0_25]
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_25]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[na:1.7.0_25]
> 	at java.lang.Thread.run(Thread.java:724) ~[na:1.7.0_25]
> {code}

--
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