Uploaded image for project: 'Drools'
  1. Drools
  2. DROOLS-1383

Deadlock in PackageClassLoader

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: Blocker Blocker
    • None
    • 6.4.0.Final
    • core engine
    • None
    • NEW
    • NEW

      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.

            mfusco@redhat.com Mario Fusco
            whzhu Karen Zhu (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: