Bug 1330433 - NullPointerExceptions when using multiple concurrent KieSessions
Summary: NullPointerExceptions when using multiple concurrent KieSessions
Keywords:
Status: CLOSED EOL
Alias: None
Product: JBoss BRMS Platform 6
Classification: Retired
Component: BRE
Version: 6.3.0
Hardware: Unspecified
OS: Unspecified
urgent
urgent
Target Milestone: ---
: ---
Assignee: Mario Fusco
QA Contact: Marek Winkler
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2016-04-26 08:50 UTC by Mario Fusco
Modified: 2020-03-27 19:13 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-03-27 19:13:05 UTC
Type: Bug


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker DROOLS-1135 0 Critical Resolved NullPointerExceptions when using multiple concurrent KieSessions 2017-09-09 08:09:37 UTC

Description Mario Fusco 2016-04-26 08:50:41 UTC
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:

kieSession = kieBase.newKieSession();

try {

  while (true) {

    work = getItemsFromQueue();

    addAndRemoveFacts(kieSession, work);

    kieSession.fireAllRules();

  }

} finally {

  kieSession.dispose();

}

This causes the following exceptions:

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)

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)

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)

Comment 1 Mario Fusco 2016-04-26 08:51:35 UTC
Fixed on master by https://github.com/droolsjbpm/drools/compare/89cc437...c94053d


Note You need to log in before you can comment on or make changes to this bug.