[rules-users] NullPointerException in RightTupleIndexHashTable.remove()

Weiss, Wolfgang Wolfgang.Weiss at joanneum.at
Tue Jun 21 04:18:57 EDT 2011


Hi all!

I encountered that null pointer exceptions occur when retracting an object from the working memory. Sometimes the problem occurs sooner sometimes later but it certainly happens. I think it also depends on the workload on the machine. Sometimes the NPE is thrown in 'LeftTupleIndexHashTable' but mainly in 'RightTupleIndexHashTable'. After the exception is thrown, the object to retract is still in the working memory. When I remove the line 'retract($obj)' in my rule, I don't get an exception.

The problem occurs mainly in this rule, but also in other rules:
rule "remove a cross talk"
  agenda-group "evaluation"
  activation-group "ag-crossTalk"
  lock-on-active true
  salience 40

  when
    $ctf  : CrossTalkFact($persID : uniquePersonID, $ctfTimestamp : timestamp)
    $pers : AnalysisCue(cueType == AnalysisCue.ACTION_STOP_TALKING, uniquePersonID == $persID, timestamp > $ctfTimestamp) from entry-point "LowLevelCueStream"
  then
    retract($ctf); //the suspicious line
    //... do some other things
end

My configuration:
drools.dialect.java.compiler = JANINO
 EventProcessingOption = STREAM

I was able to reproduce the problem with following versions:
5.1.1
 5.2.0.M1
 5.2.0.CR1


Stack trace from the version: 5.2.0.CR1
org.drools.runtime.rule.ConsequenceException: rule: remove a cross talk
                at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)
                at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:915)
                at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:844)
                at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1055)
                at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:733)
                at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:699)
                at org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:218)
                ...
Caused by: java.lang.NullPointerException
                at org.drools.core.util.RightTupleIndexHashTable.remove(RightTupleIndexHashTable.java:351)
                at org.drools.reteoo.NotNode.retractRightTuple(NotNode.java:178)
                at org.drools.reteoo.ObjectTypeNode.retractObject(ObjectTypeNode.java:235)
                at org.drools.reteoo.EntryPointNode.retractObject(EntryPointNode.java:229)
                at org.drools.common.NamedEntryPoint.retract(NamedEntryPoint.java:529)
                at org.drools.base.DefaultKnowledgeHelper.retract(DefaultKnowledgeHelper.java:226)
                at eu.ta2.orchestration.engine.cueLifter.Rule_remove_a_cross_talk_0.defaultConsequence(Unknown Source)
                at eu.ta2.orchestration.engine.cueLifter.Rule_remove_a_cross_talk_0DefaultConsequenceInvoker.evaluate(Unknown Source)
                at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:905)
                ... 31 more


Sometimes the exception occurs in the LeftTupleIndexHashTable:
org.drools.runtime.rule.ConsequenceException: rule: remove a cross talk
                at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)
                at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:915)
                at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:844)
                at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1055)
                at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:733)
                at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:699)
                at org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:218)
                ...
Caused by: java.lang.NullPointerException
                at org.drools.core.util.LeftTupleIndexHashTable.remove(LeftTupleIndexHashTable.java:275)
                at org.drools.reteoo.NotNode.retractLeftTuple(NotNode.java:231)
                at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateRetractLeftTuple(SingleLeftTupleSinkAdapter.java:212)
                at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateRetractLeftTuple(SingleLeftTupleSinkAdapter.java:86)
                at org.drools.reteoo.JoinNode.retractLeftTuple(JoinNode.java:210)
                at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateRetractLeftTuple(SingleLeftTupleSinkAdapter.java:212)
                at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateRetractRightTuple(SingleLeftTupleSinkAdapter.java:119)
                at org.drools.reteoo.JoinNode.retractRightTuple(JoinNode.java:192)
                at org.drools.reteoo.ObjectTypeNode.retractObject(ObjectTypeNode.java:235)
                at org.drools.reteoo.EntryPointNode.retractObject(EntryPointNode.java:229)
                at org.drools.common.NamedEntryPoint.retract(NamedEntryPoint.java:529)
                at org.drools.base.DefaultKnowledgeHelper.retract(DefaultKnowledgeHelper.java:226)
                at eu.ta2.orchestration.engine.cueLifter.Rule_remove_a_cross_talk_0.defaultConsequence(Unknown Source)
                at eu.ta2.orchestration.engine.cueLifter.Rule_remove_a_cross_talk_0DefaultConsequenceInvoker.evaluate(Unknown Source)
                at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:905)
                ... 31 more


Any help is appreciated.

Best regards,
Wolfgang

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110621/6d388177/attachment.html 


More information about the rules-users mailing list