<div>hi all, </div><div>the exception below is usually thrown when the system is busy(usually 9-10 am everyday);</div><div>The rules runs perfectly when unit test or any other time when the system is not very busy(like 22:00 - 4:00 every day);</div>
<div>Our system processes 13000000 pieces of data each day, with 4-5 java.lang.ArrayIndexOutOfBoundsException thrown on average.It&#39;s not very often but doubtful.</div><div>The logs are shown below:</div><div><br></div>
<div>2012-03-07 10:10:33,683 [] ERROR ruleservice.RuleServiceImpl - Error occurred while invoking business filter!</div><div>java.lang.reflect.InvocationTargetException</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at com.alibaba.china.avatar.offer.rulematch.OfferMatchFilter$$FastClassByCGLIB$$18f6f037.invoke(&lt;generated&gt;)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at com.alibaba.china.ruleservice.RuleServiceImpl.bindParamAndInvoke(RuleServiceImpl.java:264)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at com.alibaba.china.ruleservice.RuleServiceImpl.match(RuleServiceImpl.java:82)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at sun.reflect.GeneratedMethodAccessor248.invoke(Unknown Source)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at java.lang.reflect.Method.invoke(Method.java:597)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at com.alibaba.china.avatar.interceptor.KeyDataLoggingAfterThrowingInterceptor.invoke(KeyDataLoggingAfterThrowingInterceptor.java:24)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at com.alibaba.dragoon.patrol.spring.DragoonMethodInterceptor.invoke(DragoonMethodInterceptor.java:106)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at $Proxy16.match(Unknown Source)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at com.alibaba.china.avatar.offer.decode.OfferMessageAction.run(OfferMessageAction.java:39)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at com.alibaba.china.rialto.core.module.DefaultActionModule.doWork(DefaultActionModule.java:375)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at com.alibaba.china.rialto.core.module.DefaultActionModule.runModule(DefaultActionModule.java:252)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at com.alibaba.china.rialto.core.module.ModuleRunner.run(ModuleRunner.java:31)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at java.lang.Thread.run(Thread.java:662)</div>
<div>Caused by: org.drools.RuntimeDroolsException: Exception executing predicate Helper.containsAny(offerSubject, ((Set)colMap.get(&quot;_set_212&quot;)))</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:298)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:130)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:458)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:386)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:215)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:244)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:330)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:291)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:886)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:845)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:255)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at com.alibaba.china.ruleservice.session.impl.drools5.TransientDrools5Session.insertFact(TransientDrools5Session.java:100)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at com.alibaba.china.avatar.offer.rulematch.OfferMatchFilter.doFilter(OfferMatchFilter.java:57)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>... 23 more</div><div>Caused by: [Error: unexpected end of statement]</div><div>[Near : {... Helper.containsAny(offerSubject, ((Set)colMap.get(&quot;_set_212&quot;))) ....}]</div>
<div>                                                   ^</div><div>[Line: 1, Column: 39]</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:1215)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:128)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.util.ParseTools.subCompileExpression(ParseTools.java:2090)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.ast.Substatement.&lt;init&gt;(Substatement.java:37)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.compiler.AbstractParser.nextToken(AbstractParser.java:1062)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:128)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.util.ParseTools.subCompileExpression(ParseTools.java:2079)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:953)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:375)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:141)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.ast.ASTNode.optimize(ASTNode.java:157)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:113)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.MVELRuntime.execute(MVELRuntime.java:87)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:122)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:115)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.mvel2.MVEL.executeExpression(MVEL.java:930)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpression.java:100)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:291)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>... 35 more</div>
<div>Caused by: java.lang.ArrayIndexOutOfBoundsException</div><div><br></div><div>I looks like there&#39;s some issue in mvel2&#39;s parser.The problem occurs when dynamic compiling mvel2 code.</div><div>And every ArrayIndexOutOfBoundsException is thrown around here:  &#39;Helper.containsAny(offerSubject, ((Set)colMap.get(&quot;_set_212&quot;)))&#39; .This is a custom static function call which implements come sort of operation not supported by drools5.</div>
<div>Is this a bug about mvel2?Or any one encountered this problem also? How could I avoid it? </div><div>Thnaks!</div><div><br></div>-- <br>Regards.<br>Miles. Wen<br><br>