Description of problem: Platform issue for https://issues.jboss.org/browse/DROOLS-629 I have observed that the following NullPointerException (NPE) occurs consistently with a very specific set of rules and a very specific set of inputs into a stream session: java.lang.NullPointerException at org.drools.core.util.AbstractHashTable$SingleIndex.equal(AbstractHashTable.java:491) at org.drools.core.util.index.LeftTupleList.matches(LeftTupleList.java:266) at org.drools.core.util.index.LeftTupleIndexHashTable.get(LeftTupleIndexHashTable.java:434) at org.drools.core.util.index.LeftTupleIndexHashTable.getFirst(LeftTupleIndexHashTable.java:217) at org.drools.core.reteoo.BetaNode.getFirstLeftTuple(BetaNode.java:443) at org.drools.core.phreak.PhreakJoinNode.doRightInserts(PhreakJoinNode.java:144) at org.drools.core.phreak.PhreakJoinNode.doNode(PhreakJoinNode.java:56) at org.drools.core.phreak.RuleNetworkEvaluator.switchOnDoBetaNode(RuleNetworkEvaluator.java:548) at org.drools.core.phreak.RuleNetworkEvaluator.evalBetaNode(RuleNetworkEvaluator.java:534) at org.drools.core.phreak.RuleNetworkEvaluator.innerEval(RuleNetworkEvaluator.java:334) at org.drools.core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:161) at org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator.java:116) at org.drools.core.phreak.RuleExecutor.reEvaluateNetwork(RuleExecutor.java:229) at org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:98) at org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:988) at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1274) at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1281) at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1254) ... The exception always occurs on the next call to "insert" and "fireAllRules" after the following method is invoked within the session: org.drools.core.common.DefaultAgenda$DefaultGarbageCollector.forceGcUnlinkedRules(). Version-Release number of selected component (if applicable): How reproducible: always Steps to Reproduce: See reproducer attached to JIRA Actual results: Test fails with NPE Expected results: Test passes Additional info:
I am not getting why this ticket has been opened. My understanding is that this problem has been fixed as reported in the linked jira: https://issues.jboss.org/browse/DROOLS-629 Can you still reproduce the NPE despite that fix? If so can you please attach a reproducer for this problem?
I have created this ticket to ensure your fix to DROOLS-629 makes it into BRMS 6.2.0, and gets proper QE coverage. GSS is working on a one-off patch for BRMS 6.0.3, and we need to ensure that there is no regression when the customer upgrades to 6.2.0 later. I could *not* reproduce the NPE after having applied your fix. Hope this helps to clarify.
Fixed by https://github.com/droolsjbpm/drools/commit/12d01aa18edbb9570d6dbf7cc64c8b5b9386004e
Verified in BRMS 6.1.0 ER4. Reproducer added into 6.1.x and 6.0.x regression test suites. Not sure if comment #2 applies here, since this BZ has been targeted for 6.1.0 (ER4). A separate BZ would be needed for verification in a 6.0.3 (one-off|roll-up) patch.