[
https://issues.jboss.org/browse/DROOLS-1383?page=com.atlassian.jira.plugi...
]
Mario Fusco commented on DROOLS-1383:
-------------------------------------
What concerns me is mainly your last sentence
{quote}And in ClassLoader.class line 283, the parallelLockMap is null because
ParallelLoaders.isRegistered(this.getClass()) returns false. So did the
PackageClassLoader.class in Drools lost the register() method? I'm so confused about
this.{quote}
I don't see why the PackageClassLoader should call that register() method. Afaik it
never did in past and the it didn't "lost" that invocation.
That said it's really impossible for me to further investigate this issue without a
proper reproducer. Could you please send one?
Deadlock in PackageClassLoader
------------------------------
Key: DROOLS-1383
URL:
https://issues.jboss.org/browse/DROOLS-1383
Project: Drools
Issue Type: Bug
Components: core engine
Affects Versions: 6.4.0.Final
Reporter: Karen Zhu
Assignee: Mario Fusco
Priority: Blocker
Found one deadlock in PackageLoader. Did I write rule in a bad way? How did a consequence
of a rule will get the lock of PackageLoader which is needed by checkCerts(). Below is
threaddump information.
Found one Java-level deadlock:
=============================
"Thread-105-CustomClass-executor[17 17]":
waiting to lock monitor 0x00007f933c005b38 (object 0x00007f963ed294b0, a
java.lang.Object),
which is held by "Thread-17-CustomClass-executor[33 33]"
"Thread-17-CustomClass-executor[33 33]":
waiting to lock monitor 0x00007f933c0031f8 (object 0x00007f963ed294c0, a
org.drools.core.rule.JavaDialectRuntimeData$PackageClassLoader),
which is held by "Thread-33-CustomClass-executor[9 9]"
"Thread-33-CustomClass-executor[9 9]":
waiting to lock monitor 0x00007f933c005b38 (object 0x00007f963ed294b0, a
java.lang.Object),
which is held by "Thread-17-CustomClass-executor[33 33]"
Java stack information for the threads listed above:
===================================================
"Thread-105-CustomClass-executor[17 17]":
at
org.drools.core.rule.JavaDialectRuntimeData$PackageClassLoader.fastFindClass(JavaDialectRuntimeData.java:662)
waiting to lock <0x00007f963ed294b0> (a java.lang.Object)
at
org.drools.core.rule.JavaDialectRuntimeData$PackageClassLoader.loadClass(JavaDialectRuntimeData.java:642)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at
org.drools.core.rule.MVELDialectRuntimeData.getParserConfiguration(MVELDialectRuntimeData.java:299)
at
org.drools.core.base.mvel.MVELCompilationUnit.getCompiledExpression(MVELCompilationUnit.java:238)
at
org.drools.core.rule.constraint.MvelConstraint.createMvelConditionEvaluator(MvelConstraint.java:264)
at org.drools.core.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:248)
at org.drools.core.rule.constraint.MvelConstraint.isAllowed(MvelConstraint.java:214)
at org.drools.core.reteoo.AlphaNode.assertObject(AlphaNode.java:131)
at
org.drools.core.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:63)
at
org.drools.core.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:366)
at org.drools.core.reteoo.ObjectTypeNode.propagateAssert(ObjectTypeNode.java:300)
at org.drools.core.phreak.PropagationEntry$Insert.execute(PropagationEntry.java:93)
at
org.drools.core.phreak.SynchronizedPropagationList.flush(SynchronizedPropagationList.java:78)
at
org.drools.core.phreak.SynchronizedPropagationList.flush(SynchronizedPropagationList.java:73)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.flushPropagations(StatefulKnowledgeSessionImpl.java:2017)
at org.drools.core.common.DefaultAgenda.fireLoop(DefaultAgenda.java:1334)
at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1288)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1306)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1297)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1278)
"Thread-17-CustomClass-executor[33 33]":
at java.lang.ClassLoader.checkCerts(ClassLoader.java:942)
waiting to lock <0x00007f963ed294c0> (a
org.drools.core.rule.JavaDialectRuntimeData$PackageClassLoader)
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:666)
at java.lang.ClassLoader.defineClass(ClassLoader.java:794)
at
org.drools.core.rule.JavaDialectRuntimeData$PackageClassLoader.internalDefineClass(JavaDialectRuntimeData.java:694)
at
org.drools.core.rule.JavaDialectRuntimeData$PackageClassLoader.fastFindClass(JavaDialectRuntimeData.java:665)
locked <0x00007f963ed294b0> (a java.lang.Object)
at
org.drools.core.rule.JavaDialectRuntimeData$PackageClassLoader.loadClass(JavaDialectRuntimeData.java:642)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at
org.drools.core.rule.MVELDialectRuntimeData.getParserConfiguration(MVELDialectRuntimeData.java:299)
at
org.drools.core.base.mvel.MVELCompilationUnit.getCompiledExpression(MVELCompilationUnit.java:238)
at
org.drools.core.rule.constraint.MvelConstraint.createMvelConditionEvaluator(MvelConstraint.java:264)
at org.drools.core.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:248)
at org.drools.core.rule.constraint.MvelConstraint.isAllowed(MvelConstraint.java:214)
at org.drools.core.reteoo.AlphaNode.assertObject(AlphaNode.java:131)
at
org.drools.core.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:63)
at
org.drools.core.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:366)
at org.drools.core.reteoo.ObjectTypeNode.propagateAssert(ObjectTypeNode.java:300)
at org.drools.core.phreak.PropagationEntry$Insert.execute(PropagationEntry.java:93)
at
org.drools.core.phreak.SynchronizedPropagationList.flush(SynchronizedPropagationList.java:78)
at
org.drools.core.phreak.SynchronizedPropagationList.flush(SynchronizedPropagationList.java:73)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.flushPropagations(StatefulKnowledgeSessionImpl.java:2017)
at org.drools.core.common.DefaultAgenda.fireLoop(DefaultAgenda.java:1334)
at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1288)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1306)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1297)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1278)
"Thread-33-CustomClass-executor[9 9]":
at
org.drools.core.rule.JavaDialectRuntimeData$PackageClassLoader.fastFindClass(JavaDialectRuntimeData.java:662)
waiting to lock <0x00007f963ed294b0> (a java.lang.Object)
at
org.drools.core.rule.JavaDialectRuntimeData$PackageClassLoader.loadClass(JavaDialectRuntimeData.java:642)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at
com.cdr.apEventWrapperRules.ConstructorApBeansWrapper.constructorApBeansWrapper(ConstructorApBeansWrapper.java:55)
at
com.cdr.apEventWrapperRules.Rule_UCR2359988097.defaultConsequence(Rule_UCR2359988097.java:7)
at
com.cdr.apEventWrapperRules.Rule_UCR2359988097DefaultConsequenceInvokerGenerated.evaluate(Unknown
Source)
at
com.cdr.apEventWrapperRules.Rule_UCR2359988097DefaultConsequenceInvoker.evaluate(Unknown
Source)
at org.drools.core.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1089)
at org.drools.core.phreak.RuleExecutor.fire(RuleExecutor.java:121)
at org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:74)
at org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1007)
at org.drools.core.common.DefaultAgenda.fireLoop(DefaultAgenda.java:1350)
at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1288)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1306)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1297)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1278)
Found 1 deadlock.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)