[jboss-jira] [JBoss JIRA] (DROOLS-890) Thread deadlock issue in class ProjectClassLoader.java
Thomas Leung (JIRA)
issues at jboss.org
Thu Sep 17 04:39:00 EDT 2015
[ https://issues.jboss.org/browse/DROOLS-890?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13109788#comment-13109788 ]
Thomas Leung commented on DROOLS-890:
-------------------------------------
Sorry for late reply. I mentioned ClassNotFoundException because as my reply on 04/Sep/15 10:50 AM said, the deadlock happened after ClassNotFoundException is detected in org.drools.core.common.ProjectClassLoader.java:284. In this line, the method tries to lock
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
try {
return loadType(name, resolve);
} catch (ClassNotFoundException cnfe) { <== it must throw ClassNotFoundException here and then reach line 284
synchronized(projectClassLoader) { <== wait for lock projectClassLoader
try {
return projectClassLoader.internalLoadClass(name, resolve); // line 284
} catch (ClassNotFoundException cnfe2) {
return projectClassLoader.tryDefineType(name, cnfe);
}
}
}
}
Here is the stacks, forgive my masking our part:
"CacheWorker:48" id=538 State:DEADLOCKED
at org.drools.core.common.ProjectClassLoader$InternalTypesClassLoader.loadClass(ProjectClassLoader.java:284)
- waiting to lock org.drools.core.common.ProjectClassLoader at 28572e93 owned by:"CacheWorker:31" id=521
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at ......(Masked)......
at ConditionEvaluator86102d62aa004ffa871398c07ca154fa.evaluate(Unknown Source)
at org.drools.core.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:216)
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:387)
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 ......(Masked)......
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$Storage.invoke(PartitionedCache.CDB:10)
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache.onInvokeRequest(PartitionedCache.CDB:38)
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$InvokeRequest.run(PartitionedCache.CDB:1)
at com.tangosol.coherence.component.util.DaemonPool$WrapperTask.run(DaemonPool.CDB:1)
at com.tangosol.coherence.component.util.DaemonPool$WrapperTask.run(DaemonPool.CDB:32)
at com.tangosol.coherence.component.util.DaemonPool$Daemon.onNotify(DaemonPool.CDB:66)
at com.tangosol.coherence.component.util.Daemon.run(Daemon.CDB:51)
at java.lang.Thread.run(Thread.java:724)
Locked synchronizers:
java.util.concurrent.locks.ReentrantLock$NonfairSync at 1ed66b58
java.util.concurrent.locks.ReentrantLock$NonfairSync at 20ba2cd9
"CacheWorker:31" id=521 State:DEADLOCKED
at java.lang.ClassLoader.loadClass(ClassLoader.java:404)
- waiting to lock org.drools.core.common.ProjectClassLoader$InternalTypesClassLoader at 74793783 owned by:"CacheWorker:48" id=538
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 org.drools.core.common.ProjectClassLoader at 28572e93
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.common.NamedEntryPoint.insert(NamedEntryPoint.java:171)
at org.drools.core.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:1430)
at org.drools.core.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:222)
at org.drools.core.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:216)
at ......(Masked)......
at org.drools.core.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1046)
- locked org.drools.core.common.DefaultAgenda at 7f928335
at org.drools.core.phreak.RuleExecutor.fire(RuleExecutor.java:152)
at org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:94)
- locked org.drools.core.phreak.RuleExecutor at 794de699
at org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:964)
at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1234)
at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1239)
at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1222)
at org.drools.core.command.runtime.rule.FireAllRulesCommand.execute(FireAllRulesCommand.java:104)
at org.drools.core.command.runtime.rule.FireAllRulesCommand.execute(FireAllRulesCommand.java:32)
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 ......(Masked)......
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$Storage.invoke(PartitionedCache.CDB:10)
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache.onInvokeRequest(PartitionedCache.CDB:38)
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.partitionedService.PartitionedCache$InvokeRequest.run(PartitionedCache.CDB:1)
at com.tangosol.coherence.component.util.DaemonPool$WrapperTask.run(DaemonPool.CDB:1)
at com.tangosol.coherence.component.util.DaemonPool$WrapperTask.run(DaemonPool.CDB:32)
at com.tangosol.coherence.component.util.DaemonPool$Daemon.onNotify(DaemonPool.CDB:66)
at com.tangosol.coherence.component.util.Daemon.run(Daemon.CDB:51)
at java.lang.Thread.run(Thread.java:724)
Locked synchronizers:
java.util.concurrent.locks.ReentrantLock$NonfairSync at 695e8506
> Thread deadlock issue in class ProjectClassLoader.java
> -------------------------------------------------------
>
> Key: DROOLS-890
> URL: https://issues.jboss.org/browse/DROOLS-890
> Project: Drools
> Issue Type: Bug
> Components: core engine
> Affects Versions: 6.1.0.Final
> Reporter: Vivek Hingorani
> Assignee: Mario Fusco
> Fix For: 6.3.0.Final
>
>
> In our project , we are using drools6.1.0.Final jars and the rules are deployed in a jar. Another application when trying to use the rules jar is getting thread deadlock problem. Stack trace is
> at org.drools.core.common.ProjectClassLoader$InternalTypesClassLoader.loadClass(ProjectClassLoader,java284)
> Two threads are in deadlock condition on this thread. I restarted the application and the error is gone but we need to fix this issue so that it is not reproduced later.The class is in drools-core jar
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
More information about the jboss-jira
mailing list