[jboss-jira] [JBoss JIRA] (DROOLS-807) Stuck thread due to deadlock in ProjectClassLoader

Munish Kumar (JIRA) issues at jboss.org
Tue Jun 2 17:01:02 EDT 2015


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

Munish Kumar updated DROOLS-807:
--------------------------------
    Summary: Stuck thread due to deadlock in ProjectClassLoader  (was: Deadlock in ProjectClassLoader)


> Stuck thread due to deadlock in ProjectClassLoader
> --------------------------------------------------
>
>                 Key: DROOLS-807
>                 URL: https://issues.jboss.org/browse/DROOLS-807
>             Project: Drools
>          Issue Type: Bug
>          Components: core engine
>    Affects Versions: 6.1.0.Final
>            Reporter: Munish Kumar
>            Assignee: Mario Fusco
>
> We see below deadlock information in our Production tomcat
> Found one Java-level deadlock:
> =============================
> "tomcat-http--74":
>   waiting to lock monitor 0x00007fae28022218 (object 0x00000000902d8d20, a org.drools.core.common.ProjectClassLoader),
>   which is held by "tomcat-http--36"
> "tomcat-http--36":
>   waiting to lock monitor 0x00007fae28042838 (object 0x000000009044e5b8, a org.drools.core.common.ProjectClassLoader$InternalTypesClassLoader),
>   which is held by "Metrics Collection"
> "Metrics Collection":
>   waiting to lock monitor 0x00007fae28022218 (object 0x00000000902d8d20, a org.drools.core.common.ProjectClassLoader),
>   which is held by "tomcat-http--36"
> Java stack information for the threads listed above:
> ===================================================
> "tomcat-http--74":
>         at org.drools.core.common.ProjectClassLoader.loadClass(ProjectClassLoader.java:111)
>         - waiting to lock <0x00000000902d8d20> (a org.drools.core.common.ProjectClassLoader)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>         at org.drools.core.base.ClassFieldAccessorCache.getClass(ClassFieldAccessorCache.java:121)
>         at org.drools.core.base.ClassFieldAccessorCache.getClassObjectType(ClassFieldAccessorCache.java:45)
>         at org.drools.core.reteoo.ClassObjectTypeConf.<init>(ClassObjectTypeConf.java:85)
>         at org.drools.core.common.ObjectTypeConfigurationRegistry.getObjectTypeConf(ObjectTypeConfigurationRegistry.java:72)
>         at org.drools.core.impl.StatefulKnowledgeSessionImpl.initInitialFact(StatefulKnowledgeSessionImpl.java:689)
>         at org.drools.core.impl.StatefulKnowledgeSessionImpl.<init>(StatefulKnowledgeSessionImpl.java:388)
>         at org.drools.core.impl.StatefulKnowledgeSessionImpl.<init>(StatefulKnowledgeSessionImpl.java:278)
>         
> "tomcat-http--36":
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:404)
>         - waiting to lock <0x000000009044e5b8> (a org.drools.core.common.ProjectClassLoader$InternalTypesClassLoader)
>         at org.drools.core.common.ProjectClassLoader$InternalTypesClassLoader.loadType(ProjectClassLoader.java:293)
>         at org.drools.core.common.ProjectClassLoader$InternalTypesClassLoader.access$200(ProjectClassLoader.java:258)
>         at org.drools.core.common.ProjectClassLoader.loadType(ProjectClassLoader.java:140)
>         at org.drools.core.common.ProjectClassLoader.loadClass(ProjectClassLoader.java:115)
>         - locked <0x00000000902d8d20> (a org.drools.core.common.ProjectClassLoader)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>         at org.drools.core.rule.JavaDialectRuntimeData$PackageClassLoader.loadClass(JavaDialectRuntimeData.java:640)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Class.java:348)
>         at org.mvel2.ParserConfiguration.checkForDynamicImport(ParserConfiguration.java:163)
>         at org.mvel2.ParserConfiguration.hasImport(ParserConfiguration.java:191)
>         at org.mvel2.ParserContext.hasImport(ParserContext.java:363)
>         at org.mvel2.compiler.AbstractParser.createPropertyToken(AbstractParser.java:1342)
>         at org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:846)
>         at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:129)
>         at org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:63)
>         at org.mvel2.MVEL.compileExpression(MVEL.java:810)
>         at org.drools.core.base.mvel.MVELCompilationUnit.compile(MVELCompilationUnit.java:429)
>         at org.drools.core.base.mvel.MVELCompilationUnit.getCompiledExpression(MVELCompilationUnit.java:240)
>         at org.drools.core.rule.constraint.MvelConstraint.createMvelConditionEvaluator(MvelConstraint.java:222)
>         at org.drools.core.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:206)
>         at org.drools.core.rule.constraint.MvelConstraint.isAllowed(MvelConstraint.java:173)
>         at org.drools.core.reteoo.AlphaNode.assertObject(AlphaNode.java:134)
>         at org.drools.core.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:502)
>         at org.drools.core.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:377)
>         at org.drools.core.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:288)
>         at org.drools.core.reteoo.EntryPointNode.assertObject(EntryPointNode.java:251)
>         at org.drools.core.common.NamedEntryPoint.insert(NamedEntryPoint.java:367)
>         at org.drools.core.common.NamedEntryPoint.insert(NamedEntryPoint.java:286)
>         at org.drools.core.common.NamedEntryPoint.insert(NamedEntryPoint.java:139)
>         at org.drools.core.command.runtime.rule.InsertElementsCommand.execute(InsertElementsCommand.java:93)
>         at org.drools.core.command.runtime.rule.InsertElementsCommand.execute(InsertElementsCommand.java:40)
>         at org.drools.core.command.runtime.BatchExecutionCommandImpl.execute(BatchExecutionCommandImpl.java:155)
>         at org.drools.core.command.runtime.BatchExecutionCommandImpl.execute(BatchExecutionCommandImpl.java:76)
>         at org.drools.core.impl.StatelessKnowledgeSessionImpl.execute(StatelessKnowledgeSessionImpl.java:321)
>         at com.amdocs.dc.ruleengine.service.RuleEngineServiceImpl.evaluateRules(RuleEngineServiceImpl.java:452)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:497)
>         at com.amdocs.dc.applicationcontext.BusinessResponseProcessorServiceInvoker.invoke(BusinessResponseProcessorServiceInvoker.java:53)
>         at com.amdocs.dc.applicationcontext.spring.BusinessResponseProcessorInvocationHandler.invoke(BusinessResponseProcessorInvocationHandler.java:85)
>         at com.amdocs.dc.applicationcontext.spring.$Proxy121.evaluateRules(Unknown Source)
>         
> "Metrics Collection" #21 daemon prio=5 os_prio=0 tid=0x00007fae7883a000 nid=0x7276 waiting for monitor entry [0x00007fae27ffd000]
>    java.lang.Thread.State: BLOCKED (on object monitor)
>         at org.drools.core.common.ProjectClassLoader$InternalTypesClassLoader.loadClass(ProjectClassLoader.java:284)
>         - waiting to lock <0x00000000902d8d20> (a org.drools.core.common.ProjectClassLoader)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Class.java:348)
>         at com.mercury.diagnostics.capture.metrics.CollectorControl.instantiateCollector(CollectorControl.java:470)
>         at com.mercury.diagnostics.capture.metrics.CollectorControl.initialize(CollectorControl.java:369)
>         at com.mercury.diagnostics.capture.metrics.CollectorAgent.validateInitialization(CollectorAgent.java:1020)
>         at com.mercury.diagnostics.capture.metrics.CollectorAgent.run(CollectorAgent.java:803)
>         at java.lang.Thread.run(Thread.java:745)
> and because of above, other HTTP Connector thread are stuck at
> "tomcat-http--42" #217 daemon prio=5 os_prio=0 tid=0x00007fae54153000 nid=0x7619 waiting for monitor entry [0x00007fae12d72000]
>    java.lang.Thread.State: BLOCKED (on object monitor)
> 	at org.drools.core.common.ProjectClassLoader.loadClass(ProjectClassLoader.java:111)
> 	- waiting to lock <0x00000000902e3e88> (a org.drools.core.common.ProjectClassLoader)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
> 	at org.drools.core.base.ClassFieldAccessorCache.getClass(ClassFieldAccessorCache.java:121)
> 	at org.drools.core.base.ClassFieldAccessorCache.getClassObjectType(ClassFieldAccessorCache.java:45)
> 	at org.drools.core.reteoo.ClassObjectTypeConf.<init>(ClassObjectTypeConf.java:85)
> 	at org.drools.core.common.ObjectTypeConfigurationRegistry.getObjectTypeConf(ObjectTypeConfigurationRegistry.java:72)
> 	at org.drools.core.impl.StatefulKnowledgeSessionImpl.initInitialFact(StatefulKnowledgeSessionImpl.java:689)
> 	at org.drools.core.impl.StatefulKnowledgeSessionImpl.<init>(StatefulKnowledgeSessionImpl.java:388)
> 	at org.drools.core.impl.StatefulKnowledgeSessionImpl.<init>(StatefulKnowledgeSessionImpl.java:278)
> 	at org.drools.core.common.PhreakWorkingMemoryFactory.createWorkingMemory(PhreakWorkingMemoryFactory.java:21)
> 	at org.drools.core.impl.StatelessKnowledgeSessionImpl.newWorkingMemory(StatelessKnowledgeSessionImpl.java:133)
> 	at org.drools.core.impl.StatelessKnowledgeSessionImpl.execute(StatelessKnowledgeSessionImpl.java:309)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


More information about the jboss-jira mailing list