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

Weiss, Wolfgang Wolfgang.Weiss at joanneum.at
Wed Jun 29 06:55:28 EDT 2011


FYI: I tested my application with the latest Drools release 5.2.0.Final and I couldn't reproduce the problem described below. It seems that it is solved.

Best regards,
Wolfgang


Von: rules-users-bounces at lists.jboss.org [mailto:rules-users-bounces at lists.jboss.org] Im Auftrag von Weiss, Wolfgang
Gesendet: Dienstag, 21. Juni 2011 10:19
An: rules-users at lists.jboss.org
Betreff: [rules-users] NullPointerException in RightTupleIndexHashTable.remove()

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/20110629/80fba97b/attachment.html 


More information about the rules-users mailing list