FYI I have created JBRULES-3632 and attached minimalistic maven project that reproduces this issue.<div><br><div class="gmail_quote">On Tue, Sep 11, 2012 at 12:42 PM, Michal Bali <span dir="ltr">&lt;<a href="mailto:michalbali@gmail.com" target="_blank">michalbali@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<div><br></div><div>I am upgrading an application from 5.3.0.Final to 5.4.0.Final and I am getting the following exception:</div>
<div>Exception executing consequence for rule &quot;ruleThatFails&quot; in indexingproblem.remove.me.anditworks: java.lang.UnsupportedOperationException</div>
<div><div><span style="white-space:pre-wrap">        </span>at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)</div><div><span style="white-space:pre-wrap">        </span>at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)</div>

<div><span style="white-space:pre-wrap">        </span>at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1212)</div><div><span style="white-space:pre-wrap">        </span>at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1446)</div>

<div><span style="white-space:pre-wrap">        </span>at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710)</div><div><span style="white-space:pre-wrap">        </span>at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674)</div>

<div><span style="white-space:pre-wrap">        </span>at org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:230)</div><div><span style="white-space:pre-wrap">        </span>at com.mycompany.app.IndexingProblemMain.main(IndexingProblemMain.java:36)</div>

<div>Caused by: java.lang.UnsupportedOperationException</div><div><span style="white-space:pre-wrap">        </span>at org.drools.reteoo.BaseLeftTuple.getPrevious(BaseLeftTuple.java:480)</div><div><span style="white-space:pre-wrap">        </span>at org.drools.core.util.index.LeftTupleList.remove(LeftTupleList.java:114)</div>

<div><span style="white-space:pre-wrap">        </span>at org.drools.core.util.index.LeftTupleList.removeAdd(LeftTupleList.java:68)</div><div><span style="white-space:pre-wrap">        </span>at org.drools.reteoo.JoinNode.modifyLeftTuple(JoinNode.java:310)</div>

<div><span style="white-space:pre-wrap">        </span>at org.drools.reteoo.LeftTupleSource.doModifyLeftTuple(LeftTupleSource.java:304)</div><div><span style="white-space:pre-wrap">        </span>at org.drools.reteoo.LeftTupleSource.modifyLeftTuple(LeftTupleSource.java:278)</div>

<div><span style="white-space:pre-wrap">        </span>at org.drools.reteoo.JoinNode.modifyLeftTuple(JoinNode.java:437)</div><div><span style="white-space:pre-wrap">        </span>at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateModifyLeftTuple(SingleLeftTupleSinkAdapter.java:205)</div>

<div><span style="white-space:pre-wrap">        </span>at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateModifyObject(SingleLeftTupleSinkAdapter.java:235)</div><div><span style="white-space:pre-wrap">        </span>at org.drools.reteoo.LeftInputAdapterNode.modifyObject(LeftInputAdapterNode.java:170)</div>

<div><span style="white-space:pre-wrap">        </span>at org.drools.reteoo.SingleObjectSinkAdapter.propagateModifyObject(SingleObjectSinkAdapter.java:68)</div><div><span style="white-space:pre-wrap">        </span>at org.drools.reteoo.AlphaNode.modifyObject(AlphaNode.java:157)</div>

<div><span style="white-space:pre-wrap">        </span>at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:507)</div><div><span style="white-space:pre-wrap">        </span>at org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:421)</div>

<div><span style="white-space:pre-wrap">        </span>at org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:314)</div><div><span style="white-space:pre-wrap">        </span>at org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:265)</div>

<div><span style="white-space:pre-wrap">        </span>at org.drools.common.NamedEntryPoint.update(NamedEntryPoint.java:483)</div><div><span style="white-space:pre-wrap">        </span>at org.drools.common.NamedEntryPoint.update(NamedEntryPoint.java:383)</div>

<div><span style="white-space:pre-wrap">        </span>at org.drools.base.DefaultKnowledgeHelper.update(DefaultKnowledgeHelper.java:337)</div><div><span style="white-space:pre-wrap">        </span>at indexingproblem.remove.me.anditworks.Rule_ruleThatFails_b159773c7b1a41a2a93044d2816b96ca.defaultConsequence(Rule_ruleThatFails_b159773c7b1a41a2a93044d2816b96ca.java:9)</div>

<div><span style="white-space:pre-wrap">        </span>at indexingproblem.remove.me.anditworks.Rule_ruleThatFails_b159773c7b1a41a2a93044d2816b96caDefaultConsequenceInvokerGenerated.evaluate(Unknown Source)</div>
<div><span style="white-space:pre-wrap">        </span>at indexingproblem.remove.me.anditworks.Rule_ruleThatFails_b159773c7b1a41a2a93044d2816b96caDefaultConsequenceInvoker.evaluate(Unknown Source)</div><div><span style="white-space:pre-wrap">        </span>at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1277)</div>

<div><span style="white-space:pre-wrap">        </span>... 6 more</div></div><div><br></div><div><br></div><div>I have tried to create a minimal test case that recreates this issue, here it is:</div><div><div>package indexingproblem.remove.me.anditworks;</div>

<div><br></div><div>declare Criteria</div><div>  processed : boolean</div><div>end</div><div><br></div><div>declare CheeseCriteria extends Criteria</div><div>end</div><div><br></div><div>rule setUp</div><div>salience 10000</div>

<div><span style="white-space:pre-wrap">        </span>when</div><div><span style="white-space:pre-wrap">        </span></div><div><span style="white-space:pre-wrap">        </span>then</div>
<div>        insert(new CheeseCriteria());</div><div>end</div><div><br></div><div>rule aaa</div><div>  when</div><div>        CheeseCriteria(  ) </div><div>  then  </div><div>end</div><div><br></div><div>rule bbb</div><div>

  when</div><div>        CheeseCriteria( )</div><div>  then   </div><div>end</div><div><br></div><div>rule ccc</div><div>  when</div><div>        CheeseCriteria(  )</div><div>  then  </div><div>end</div><div><br></div><div>

<br></div><div>rule eeeFalse</div><div>  when</div><div>        Criteria( processed == false )</div><div>    then</div><div>end</div><div><br></div><div>declare Filter</div><div>  </div><div>end</div><div><br></div><div>
rule fffTrue</div>
<div>  when</div><div>        Criteria( processed == true )</div><div>        Filter(  )</div><div>    then</div><div>        </div><div>end</div><div><br></div><div>rule ruleThatFails</div><div>  when</div><div>        $criteria : Criteria( processed == false )</div>

<div>    then</div><div>        modify($criteria) {</div><div>            setProcessed(true)</div><div>        }</div><div>end</div></div><div><br></div><div>I&#39;ve tried to run it on 5.5.0-SNAPSHOT, but I got the same result. Note that if you change the rule package to be &quot;package indexingproblem&quot; the exception is not thrown. The code for building the KnowledgeBase is standard, I haven&#39;t used any additional options. No fact is inserted only one fireAllRules call.</div>

<div><br></div><div>Please let me know if I should create a new JIRA ticket for this or if I am doing something wrong.</div><div><br></div><div>Thanking you in advance.</div><div>Best regards,</div><div>Michal</div>
</blockquote></div><br></div>