[jboss-jira] [JBoss JIRA] Updated: (JBRULES-2810) NullPointerException in Drools 5.1.1 - retractLeftTuple()

Edson Tirelli (JIRA) jira-events at lists.jboss.org
Tue Jan 4 22:48:18 EST 2011


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

Edson Tirelli updated JBRULES-2810:
-----------------------------------

    Attachment:     (was: drools-core-5.1.1-jbrules2810v2.jar)


> NullPointerException in Drools 5.1.1 - retractLeftTuple()
> ---------------------------------------------------------
>
>                 Key: JBRULES-2810
>                 URL: https://issues.jboss.org/browse/JBRULES-2810
>             Project: Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: drools-core
>    Affects Versions: 5.1.1.FINAL
>         Environment: WIndows Server 2K3 (32-bit) - JBoss 5 AS, Drools 5.1.1 Final, 
>            Reporter: Tom Murphy
>            Assignee: Mark Proctor
>         Attachments: drools-core-5.1.1-jbrules2810v3.jar
>
>
> We recently switched to Drools 5.1.1 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.wellsfargo.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.wellsfargo.GeneratedRules.Rule_RS7673_1_3_RF6365_83_50011728_0.defaultConsequence(Rule_RS7673_1_3_RF6365_83_50011728_0.java:9)
> 	at com.wellsfargo.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 );

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list