<div><br></div>      One way of helping isolating the problem is to set a break point for a NullPointerException. When the exception is raised do 2 things:<div><br></div><div>1. In the RuleTerminalNode where the NPE is generated, check the content of the &quot;rule&quot; attribute. This will tell you the offending rule.</div>
<div><br></div><div>2. Check which reference is null in the offending line:</div><div><br></div><div><div>                item.setSalience( rule.getSalience().getValue( tuple,</div><div>                                                               this.rule,</div>
<div>                                                               workingMemory ) );</div><div>     Probably &quot;item&quot; is null.</div><div><br></div><div>     After that, it should be easy to isolate and simplify the 2 rules that are raising the problem. The one with the modify in the consequence (R1) and the other one where the NPE is occurring (R2).</div>
<div><br></div><div>     Finally, if you use the audit log, you can see the scenario where it happens. It is probably activating R2 and before firing it, triggering a modify that maintains it active, or some variation in the scenario.</div>
<div><br></div><div>     Once you have this data, it will be possible for us to analyze the case and fix the problem.</div><div>     </div><div>     Edson</div><div> </div><br><div class="gmail_quote">2011/10/3 Jamie <span dir="ltr">&lt;<a href="mailto:jshaw@llbean.com">jshaw@llbean.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">I recently upgraded from 5.2.0 Final to 5.3.0 CR1 because I was experiencing<br>
memory leaks in 5.2.0 Final due to a known bug that was fixed in 5.3.0 CR1.<br>
I have a suite of FitNesse tests that exercise the majority of my rules and<br>
flows, and I can demonstrate that the memory leak is indeed fixed, but one<br>
of my tests is now failing.  If I revert back to 5.2.0 Final, all is well.<br>
<br>
I&#39;ve been trying to determine the root cause for the past 3 days, but I&#39;m<br>
not getting anywhere.  I suspect that it&#39;s related to an interaction between<br>
2 rules, e.g. one rule modifies something that causes the second rule to<br>
fire, but the second rule chokes in the consequence when it tries to execute<br>
a modify() statement.  If I comment out the modify portion, the rule fires<br>
fine.<br>
<br>
I wish I could provide an example, but my implementation is too complex for<br>
that and I haven&#39;t been able to reproduce it in a stand-alone example.<br>
<br>
I know a stack trace probably won&#39;t tell you much, but I&#39;ve included it<br>
below just in case.  If anyone has any ideas, I&#39;d love to hear them.  If<br>
there&#39;s any additional information you think might help diagnose the<br>
problem, I&#39;d be happy to provide it.<br>
<br>
Thanks,<br>
Jamie<br>
<br>
org.drools.runtime.rule.ConsequenceException: rule: Rule 022 - Load Buyer<br>
Activity<br>
<br>
        at<br>
org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)<br>
        at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1101)<br>
        at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1029)<br>
        at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1251)<br>
        at<br>
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:708)<br>
        at<br>
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:672)<br>
        at<br>
org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:218)<br>
        at<br>
com.llbean.fraud.rule.engine.DroolsRulesEngine.invokeRules(DroolsRulesEngine.java:119)<br>
        at<br>
com.llbean.fraud.rule.engine.DroolsRulesEngine.invokeRules(DroolsRulesEngine.java:81)<br>
        at<br>
com.llbean.fraud.fitnesse.fixtures.tests.TestFraudRules.execute(TestFraudRules.java:116)<br>
        at fit.ColumnFixture.executeIfNeeded(ColumnFixture.java:57)<br>
        at fit.ColumnFixture.check(ColumnFixture.java:46)<br>
        at fit.Binding$QueryBinding.doCell(Binding.java:188)<br>
        at fit.ColumnFixture.doCell(ColumnFixture.java:37)<br>
        at fit.Fixture.doCells(Fixture.java:171)<br>
        at fit.Fixture.doRow(Fixture.java:165)<br>
        at fit.ColumnFixture.doRow(ColumnFixture.java:25)<br>
        at fit.Fixture.doRows(Fixture.java:159)<br>
        at fit.ColumnFixture.doRows(ColumnFixture.java:18)<br>
        at fit.Fixture.doTable(Fixture.java:153)<br>
        at fit.Fixture.interpretFollowingTables(Fixture.java:119)<br>
        at fit.Fixture.interpretTables(Fixture.java:105)<br>
        at fit.Fixture.doTables(Fixture.java:79)<br>
        at<br>
com.llbean.test.fitnesse.servletrunner.server.LLBFitServer.process(LLBFitServer.java:120)<br>
        at<br>
com.llbean.test.fitnesse.servletrunner.server.LLBFitServer.runTests(LLBFitServer.java:40)<br>
        at<br>
com.llbean.test.fitnesse.servletrunner.servlet.FitServlet.service(FitServlet.java:32)<br>
        at<br>
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1530)<br>
        at<br>
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:829)<br>
        at<br>
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:458)<br>
        at<br>
com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:175)<br>
        at<br>
com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91)<br>
        at<br>
com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:862)<br>
        at<br>
com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583)<br>
        at<br>
com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:178)<br>
        at<br>
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:455)<br>
        at<br>
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:384)<br>
        at<br>
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:272)<br>
        at<br>
com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)<br>
        at<br>
com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)<br>
        at<br>
com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)<br>
        at<br>
com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)<br>
        at<br>
com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)<br>
        at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)<br>
        at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)<br>
        at<br>
com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)<br>
        at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)<br>
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)<br>
Caused by: java.lang.NullPointerException<br>
        at<br>
org.drools.reteoo.RuleTerminalNode.createActivations(RuleTerminalNode.java:276)<br>
        at<br>
org.drools.reteoo.RuleTerminalNode.modifyLeftTuple(RuleTerminalNode.java:326)<br>
        at<br>
org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateModifyChildLeftTuple(SingleLeftTupleSinkAdapter.java:273)<br>
        at<br>
org.drools.reteoo.EvalConditionNode.modifyLeftTuple(EvalConditionNode.java:234)<br>
        at<br>
org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateModifyChildLeftTuple(CompositeLeftTupleSinkAdapter.java:295)<br>
        at org.drools.reteoo.JoinNode.modifyLeftTuple(JoinNode.java:380)<br>
        at org.drools.reteoo.BetaNode.modifyLeftTuple(BetaNode.java:450)<br>
        at org.drools.reteoo.JoinNode.modifyLeftTuple(JoinNode.java:446)<br>
        at<br>
org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateModifyObject(CompositeLeftTupleSinkAdapter.java:260)<br>
        at<br>
org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateModifyObject(CompositeLeftTupleSinkAdapter.java:275)<br>
        at<br>
org.drools.reteoo.LeftInputAdapterNode.modifyObject(LeftInputAdapterNode.java:174)<br>
        at<br>
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:461)<br>
        at<br>
org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:429)<br>
        at org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:277)<br>
        at org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:271)<br>
        at org.drools.common.NamedEntryPoint.update(NamedEntryPoint.java:459)<br>
        at org.drools.common.NamedEntryPoint.update(NamedEntryPoint.java:363)<br>
        at<br>
org.drools.base.DefaultKnowledgeHelper.update(DefaultKnowledgeHelper.java:298)<br>
        at<br>
com.llbean.droolstest.Rule_Rule_022___Load_Buyer_Activity.defaultConsequence(Rule_Rule_022___Load_Buyer_Activity.java:15)<br>
        at<br>
com.llbean.droolstest.Rule_Rule_022___Load_Buyer_ActivityDefaultConsequenceInvokerGenerated.evaluate(Unknown<br>
Source)<br>
        at<br>
com.llbean.droolstest.Rule_Rule_022___Load_Buyer_ActivityDefaultConsequenceInvoker.evaluate(Unknown<br>
Source)<br>
        at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1091)<br>
        ... 45 more<br>
<font color="#888888"><br>
<br>
--<br>
View this message in context: <a href="http://drools.46999.n3.nabble.com/5-3-0-CR1-has-broken-existing-rules-flows-tp3390922p3390922.html" target="_blank">http://drools.46999.n3.nabble.com/5-3-0-CR1-has-broken-existing-rules-flows-tp3390922p3390922.html</a><br>

Sent from the Drools: User forum mailing list archive at Nabble.com.<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</font></blockquote></div><br><br clear="all"><div><br></div>-- <br>  Edson Tirelli<br>  JBoss Drools Core Development<br>  JBoss by Red Hat @ <a href="http://www.jboss.com">www.jboss.com</a><br>
</div>