[rules-users] ArrayIndexOutOfBounds when calling addKnowledgePackage?

malkhafaji moe.alkhafaji at medcpu.com
Sun May 23 09:31:07 EDT 2010


Hello,

I am trying to create a bunch of KnowledgeBase objects, this is what I am
doing:

1. create one List of KnowledgePackage objects (pre-compile them).
2. Create X number of KnowledgeBases, and for each knowledge base do this:

for (KnowledgePackage kp : this.knowledgePackages) {
				Collection<KnowledgePackage> collections = new
ArrayList<KnowledgePackage>();
				collections.add(kp);
				knowledgeBase.addKnowledgePackages(collections);
			}

Please forget about optimizations for now, this is just an isolated test to
solve this issue. So, notice how I am using the SAME list of
KnowledgePackage objects, but to initialize MULTIPLE KnowledgeBase
instances. Here is the exception that I am getting (and sometimes I get it
sometimes I don't on the same code!). This exception happens exactly at the
addKnowledgePackage line (last line in the loop above). One last piece of
information, I am executing the code above in a thread, meaning multiple
threads are accessing the same KnowledgePackage array list but populating
totally distinct KnowledgeBases. Any idea any one?

Exception in thread "KnowledgeBasePoolObject_Init_1"
java.lang.ArrayIndexOutOfBo
undsException: 7
        at java.util.ArrayList.add(Unknown Source)
        at org.drools.rule.EvalCondition.clone(EvalCondition.java:135)
        at
org.drools.rule.LogicTransformer$AndOrTransformation.transform(LogicT
ransformer.java:330)
        at
org.drools.rule.LogicTransformer.applyOrTransformation(LogicTransform
er.java:242)
        at
org.drools.rule.LogicTransformer.processTree(LogicTransformer.java:23
2)
        at
org.drools.rule.LogicTransformer.transform(LogicTransformer.java:81)
        at org.drools.rule.Rule.getTransformedLhs(Rule.java:523)
        at
org.drools.reteoo.builder.ReteooRuleBuilder.addRule(ReteooRuleBuilder
.java:97)
        at org.drools.reteoo.ReteooBuilder.addRule(ReteooBuilder.java:117)
        at org.drools.reteoo.ReteooRuleBase.addRule(ReteooRuleBase.java:409)
        at
org.drools.common.AbstractRuleBase.addRule(AbstractRuleBase.java:635)

        at
org.drools.common.AbstractRuleBase.addPackages(AbstractRuleBase.java:
517)
        at
org.drools.reteoo.ReteooRuleBase.addPackages(ReteooRuleBase.java:426)

        at
org.drools.impl.KnowledgeBaseImpl.addKnowledgePackages(KnowledgeBaseI
mpl.java:121)
        at
com.medcpu.mpu.pp.engine.KnowledgeBasePool.getNewKnowledgeBasePoolObj
ect(KnowledgeBasePool.java:125)
-- 
View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/ArrayIndexOutOfBounds-when-calling-addKnowledgePackage-tp837841p837841.html
Sent from the Drools - User mailing list archive at Nabble.com.



More information about the rules-users mailing list