Hide Forgot
Help Desk Ticket Reference: https://c.na7.visual.force.com/apex/Case_View?id=500A0000005fJq7&sfdc.override=1 securitylevel_name: Public We recently switched to Drools 5.1.1 and BRMS 5.1.0 GA in our testing environments, and we are seeing a NullPointerException on a number of rule base / test case combinations. These all worked fine in 5.0.1. The rule in question is relatively simple, but the rule base is complex. It's difficult to send a test case, because the exception appears to occur only in large rule bases and layered rule flows. We have had to roll back to Drools 5.0.1 and are unable to adopt 5.1.1 until this is resolved. The relevant stack trace info is below. com.test.ARGenT.Execution.ARGenTRunTimeException - org.drools.runtime.rule.ConsequenceException: rule: RS7673.1.3_RF6365_83_50011728 ... Caused by: rule: RS7673.1.3_RF6365_83_50011728 at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39) at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:927) at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:856) at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1071) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:785) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:751) at org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:218) ... Caused by: null at org.drools.reteoo.RightInputAdapterNode.retractLeftTuple(RightInputAdapterNode.java:154) at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateRetractLeftTuple(SingleLeftTupleSinkAdapter.java:217) at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateRetractRightTuple(SingleLeftTupleSinkAdapter.java:124) at org.drools.reteoo.JoinNode.retractRightTuple(JoinNode.java:151) at org.drools.reteoo.ModifyPreviousTuples.retractTuples(ModifyPreviousTuples.java:132) at org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:176) at org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1442) at org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1349) at org.drools.base.DefaultKnowledgeHelper.update(DefaultKnowledgeHelper.java:183) at org.drools.base.DefaultKnowledgeHelper.update(DefaultKnowledgeHelper.java:196) at com.test.GeneratedRules.Rule_RS7673_1_3_RF6365_83_50011728_0.defaultConsequence(Rule_RS7673_1_3_RF6365_83_50011728_0.java:9) at com.test.GeneratedRules.Rule_RS7673_1_3_RF6365_83_50011728_0DefaultConsequenceInvoker.evaluate(Rule_RS7673_1_3_RF6365_83_50011728_0DefaultConsequenceInvoker.java:29) at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:917) at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:856) at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1071) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:785) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:751) at org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:218) ... The line identified in in the exception from retractLeftTuple is in the for loop, and it references factHandle without first checking for null: // retrieve handle from memory final InternalFactHandle factHandle = (InternalFactHandle) memory.remove( tuple ); >>>>>> for ( RightTuple rightTuple = factHandle.getFirstRightTuple(); rightTuple != null; rightTuple = (RightTuple) rightTuple.getHandleNext() ) { rightTuple.getRightTupleSink().retractRightTuple( rightTuple, context, workingMemory ); } factHandle.setFirstRightTuple( null );
Link: Added: This issue Cloned to BRMS-519
Link: Added: This issue Cloned to JBRULES-2810
Patch branch created: https://svn.jboss.org/repos/labs/labs/jbossrules/soa_branches/BRMS-5.1-GA_BRMS-538/ (http://anonsvn.jboss.org/repos/labs/labs/jbossrules/soa_branches/BRMS-5.1-GA_BRMS-538/) Fixes merged into patch branch.
Assigning back to Matt
Jiri, please, test this.
The one off build is done. Please get it from http://jawa05.englab.brq.redhat.com/patches/BRMS-538/
Link: Added: This issue related SOA-2815
The patched build has passed the added unit test case as well as the standard QE set of functional tests. Assigning back to Matt.
this one-off patch was never pushed to csp
Patch is now available on the CSP.
Closing - as the patch is on CSP.
This patch superceded by BRMS-599, which includes code for BRMS-538 and BRMS-590.