[jboss-jira] [JBoss JIRA] (DROOLS-1135) NullPointerExceptions when using multiple concurrent KieSessions

Mario Fusco (JIRA) issues at jboss.org
Thu Apr 21 06:17:00 EDT 2016


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

Mario Fusco updated DROOLS-1135:
--------------------------------
    Priority: Critical  (was: Major)


> NullPointerExceptions when using multiple concurrent KieSessions
> ----------------------------------------------------------------
>
>                 Key: DROOLS-1135
>                 URL: https://issues.jboss.org/browse/DROOLS-1135
>             Project: Drools
>          Issue Type: Bug
>          Components: core engine
>            Reporter: Mario Fusco
>            Assignee: Mario Fusco
>            Priority: Critical
>
> A number of worker threads is running simultaneously in a thread pool. Each thread is initialised with the same KieContainer from which they extract a KieBase using KieContainer.getKieBase("name"). Each worker thread obtains a KieSession from its KieBase, and then executes a simple loop, taking instructions from a queue, inserting and removing facts based on those instructions, and then firing all rules:
> {code}
> kieSession = kieBase.newKieSession();
> try {
>   while (true) {
>     work = getItemsFromQueue();
>     addAndRemoveFacts(kieSession, work);
>     kieSession.fireAllRules();
>   }
> } finally {
>   kieSession.dispose();
> }
> {code}
> This causes the following exceptions:
> {code}
> Exception in thread "Worker-1" java.lang.NullPointerException	at org.drools.core.reteoo.NodeTypeEnums.isLeftTupleSource(NodeTypeEnums.java:84)
> 	at org.drools.core.phreak.SegmentUtilities.updateRiaAndTerminalMemory(SegmentUtilities.java:380)
> 	at org.drools.core.phreak.SegmentUtilities.createSegmentMemory(SegmentUtilities.java:171)
> 	at org.drools.core.phreak.SegmentUtilities.getQuerySegmentMemory(SegmentUtilities.java:205)
> 	at org.drools.core.phreak.SegmentUtilities.processQueryNode(SegmentUtilities.java:192)
> 	at org.drools.core.phreak.SegmentUtilities.createSegmentMemory(SegmentUtilities.java:115)
> 	at org.drools.core.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:166)
> 	at org.drools.core.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:63)
> 	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)
> 	at com.X.processRequests(X.java:86)
> 	at com.X$$Lambda$104/975722152.run(Unknown Source)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> 	at java.lang.Thread.run(Thread.java:745)
> {code}
> {code}
> Exception in thread "Worker-6" java.lang.NullPointerException	at org.drools.core.reteoo.ObjectTypeNode.updateTupleSinkId(ObjectTypeNode.java:410)
> 	at org.drools.core.reteoo.ObjectTypeNode.updateTupleSinkId(ObjectTypeNode.java:416)
> 	at org.drools.core.reteoo.ObjectTypeNode.updateTupleSinkId(ObjectTypeNode.java:416)
> 	at org.drools.core.reteoo.ObjectTypeNode.checkDirty(ObjectTypeNode.java:274)
> 	at org.drools.core.reteoo.ObjectTypeNode.propagateAssert(ObjectTypeNode.java:294)
> 	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)
> 	at com.X.processRequests(X.java:86)
> 	at com.X$$Lambda$162/1410998625.run(Unknown Source)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> 	at java.lang.Thread.run(Thread.java:745)
> {code}
> {code}
> Exception in thread "Worker-7" java.lang.NullPointerException	at org.drools.core.reteoo.ObjectTypeNode.updateTupleSinkId(ObjectTypeNode.java:410)
> 	at org.drools.core.reteoo.ObjectTypeNode.checkDirty(ObjectTypeNode.java:274)
> 	at org.drools.core.reteoo.ObjectTypeNode.propagateAssert(ObjectTypeNode.java:294)
> 	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)
> 	at com.X.processRequests(X.java:86)
> 	at com.X$$Lambda$99/1591140286.run(Unknown Source)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> 	at java.lang.Thread.run(Thread.java:745)
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jboss-jira mailing list