[rules-users] Help with MR3

Mark Proctor mproctor at codehaus.org
Wed Jul 4 08:00:32 EDT 2007


I don't beleive there is anything in 4.0 that is going to cause such 
quick loss of permgen. Can you create a self contained example that 
illustrates this behaviour? So we can reproduce this?

Mark
s erel wrote:
> We've tried to increase the permGen to 256mb. It did not help and the 
> space run out really fast.
> Regarding MVEL, is turning code generation off something that can (or 
> will) be done with a configuration parameter/factory method or do I 
> need to track down all the places in the code?
>  
> We did not experience such memory behavior with the previous version 
> we used (3.06) when running the same tests.
> Bugs in 3.06 (no longer present in 4M3) are forcing us to upgrade.
>  
> Is there another reason for such behaviour?
> Should we wait for release candidate?
>
>  
> On 7/4/07, *Mark Proctor* <mproctor at codehaus.org 
> <mailto:mproctor at codehaus.org>> wrote:
>
>     increase your perm gen space,or use the MVEL dialect with code
>     generation off.
>
>
>     Mark
>     s erel wrote:
>>     Hello,
>>      
>>     During capacity tests we've received permGen OOM exception. The
>>     occupied space in the permGen area increases rapidly. Any opinions?
>>
>>
>>     On 7/3/07, *s erel* <erelsagi at gmail.com
>>     <mailto:erelsagi at gmail.com>> wrote:
>>
>>         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* <mproctor at codehaus.org
>>         <mailto:mproctor at codehaus.org>> 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* <mproctor at codehaus.org
>>>             <mailto:mproctor at codehaus.org>> 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* <mproctor at codehaus.org
>>>>                 <mailto:mproctor at codehaus.org>> 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 list
>>>>>                     rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>>>>>                     https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>                       
>>>>
>>>>                      
>>>>
>>>>                     _______________________________________________
>>>>                     rules-users mailing list
>>>>                     rules-users at lists.jboss.org
>>>>                     <mailto:rules-users at lists.jboss.org>
>>>>                     https://lists.jboss.org/mailman/listinfo/rules-users
>>>>                     <https://lists.jboss.org/mailman/listinfo/rules-users>
>>>>
>>>>
>>>>                 ------------------------------------------------------------------------
>>>>
>>>>                 _______________________________________________
>>>>                 rules-users mailing list
>>>>                 rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>>>>                 https://lists.jboss.org/mailman/listinfo/rules-users
>>>>                   
>>>
>>>
>>>                 _______________________________________________
>>>                 rules-users mailing list
>>>                 rules-users at lists.jboss.org
>>>                 <mailto:rules-users at lists.jboss.org>
>>>                 https://lists.jboss.org/mailman/listinfo/rules-users
>>>                 <https://lists.jboss.org/mailman/listinfo/rules-users>
>>>
>>>
>>>             ------------------------------------------------------------------------
>>>
>>>             _______________________________________________
>>>             rules-users mailing list
>>>             rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>>>             https://lists.jboss.org/mailman/listinfo/rules-users
>>>               
>>
>>
>>             _______________________________________________
>>             rules-users mailing list
>>             rules-users at lists.jboss.org
>>             <mailto:rules-users at lists.jboss.org>
>>             https://lists.jboss.org/mailman/listinfo/rules-users
>>             <https://lists.jboss.org/mailman/listinfo/rules-users>
>>
>>
>>
>>     ------------------------------------------------------------------------
>>
>>     _______________________________________________
>>     rules-users mailing list
>>     rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>>     https://lists.jboss.org/mailman/listinfo/rules-users
>>       
>
>
>     _______________________________________________
>     rules-users mailing list
>     rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>     https://lists.jboss.org/mailman/listinfo/rules-users
>     <https://lists.jboss.org/mailman/listinfo/rules-users>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070704/1bdc9fda/attachment.html 


More information about the rules-users mailing list