In our project we are creating a StatefulRuleSession and saving it in a
per-thread context (i.e. Each thread has it's own StatefulRuleSession):

ruleServiceProvider.getRuleRuntime().createRuleSession(contextName,
properties, RuleRuntime.STATEFUL_SESSION_TYPE);

When a thread session ends, we are calling release on the previously created
StatefulRuleSession.


Changing the following lines:


public abstract class AbstractHashTable


...

   public Iterator iterator() {
//        if ( this.iterator == null ) {
//            this.iterator = new HashTableIterator( this );
//        }
//
//        this.iterator.reset();
//        return this.iterator;

       HashTableIterator iterator = new HashTableIterator(this);
       iterator.reset();

       return iterator;
   }
Seems to solve the problem I've encountered. What's your opinion?


On 7/2/07, Mark Proctor <[EMAIL PROTECTED]> wrote:

a working memory should be single threaded, so not sure how this could be
a race condition?

Mark
s erel wrote:

I've done a little debugging. The code fails in the following segment:

public static class HashTableIterator
...
 while ( this.entry == null ) {
                    this.row++;
                    if ( this.row == this.length ) {
                        return null;
                    }
                    this.entry = this.table[this.row]; *// ---> index out
of bounds exception*
                }
}

this.row has the same value as this.length despite the condition above it.
Probably a race condition issue.


On 7/2/07, Mark Proctor <[EMAIL PROTECTED] > wrote:
>
> Not really :(
>
> In your situation I tend to keep removing rules and data while still
> making sure the error happens, to get it down to a minimum. Please do try,
> as this isn't an error that should happen. Or alterntaively you can open
> drools-core and drools-compiler in eclipse and execuse and debug this
> yourself - in your situation this might best. you can put in a breakpoint to
> listen for that particular exception.
>
> Mark
> s erel wrote:
>
> It's hard for me to provide a self contained project. The drl is long
> and uses several business objects. It's the same drl as we've been using for
> 306 minus the keyword changes.
> Is there anything else i can check or provide you in order to solve this
> matter.
>
> Thanks
>
> On 7/1/07, Mark Proctor <[EMAIL PROTECTED] > wrote:
> >
> > Can you provide us a self contained project which creates this error?
> > Unless we can recreate it, it will be very hard to track it down. Please
> > attach the project to a jira and we'll make it a priority.
> >
> > Mark
> > s erel wrote:
> >
> >  Hello,
> >
> > I've just started integrating MR3 into my project (I've previously
> > used 3.06). The drl compiles and everything seems fine, but during
> > tests the following exception is thrown for time to time:
> >
> > java.lang.ArrayIndexOutOfBoundsException: 17
> >  at org.drools.util.AbstractHashTable$HashTableIterator.next(
> > AbstractHashTable.java:250)
> >  at org.drools.reteoo.Rete$ObjectTypeConf.buildCache(Rete.java:434)
> >  at org.drools.reteoo.Rete$ObjectTypeConf.getObjectTypeNodes(Rete.java
> > :425)
> >  at org.drools.reteoo.Rete.assertObject(Rete.java:172)
> >  at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java
> > :190)
> >  at
> > org.drools.reteoo.ReteooWorkingMemory$WorkingMemoryReteAssertAction.execute(
> > ReteooWorkingMemory.java:163)
> >  at org.drools.common.AbstractWorkingMemory.executeQueuedActions(
> > AbstractWorkingMemory.java:1135)
> >  at org.drools.common.AbstractWorkingMemory.insert(
> > AbstractWorkingMemory.java:781)
> >  at org.drools.common.AbstractWorkingMemory.insert(
> > AbstractWorkingMemory.java:584)
> >  at org.drools.jsr94.rules.StatefulRuleSessionImpl.addObject(
> > StatefulRuleSessionImpl.java:162)
> >
> > This only happens during high load tests.
> > Can anyone help me?
> >
> > Thanks
> >
> >
> > ------------------------------
> >
> > _______________________________________________
> > rules-users mailing [EMAIL 
PROTECTED]://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
> >
> >
> > _______________________________________________
> > rules-users mailing list
> > [email protected]
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
> ------------------------------
>
> _______________________________________________
> rules-users mailing [EMAIL 
PROTECTED]://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
> _______________________________________________
> rules-users mailing list
> [email protected]
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
------------------------------

_______________________________________________
rules-users mailing [EMAIL 
PROTECTED]://lists.jboss.org/mailman/listinfo/rules-users



_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users


_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to