mic, has been working on this all day and cannot reproduce it. spinning off a hundred threads and sesssions; you'll have to provide some code that recreates the situation for us.

Mark
s erel wrote:
Please let me know if the permGen issue can be fixed somehow.
Thanks

On 7/5/07, *Mark Proctor* <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:

    actually, yes you are right - that was indeed the problem. That
    iterator is normally only used by the working memory, which is
    single threaded, but in this case its on the rulebase, which is
    not suppose to hold state. I'll fix this now,  well found :)

    Mark

    s erel wrote:
    Do you know if the fix I mentioned (returning a new iterator each
    time) solves the problem or only mask it?
    We create the initial RuleBase on server start-up.
On 7/4/07, *Mark Proctor* <[EMAIL PROTECTED]
    <mailto:[EMAIL PROTECTED]>> wrote:

        actually I thought i tracked it down, was wrong. Anyway once
        the RuleBase is built the "ObjectHashMap objectTypeNodes" in
        Rete should not change....Only I things I can think of are:
        1) Some how a thread is seeing a stale version of the map
        2) the rulebase is getting updated while propagation is
        happening, maybe combine with an issue from 1. In reality the
        rulebase addition should obey the standard locking mechanism
        and stop this from happening.
        3) The initial RuleBase hasn't finished building yet, and
        threads are already being spun off to assert data.

        I have a feeling its 3...

        Mark

        Mark Proctor wrote:
        ok, that might be it. We generate code in a singleton
        classloader, I suspect that each thread is generating its'
        own getters. I suspect that created singleton classloader is
        not getting GCd and releasing the perm gen. I'm not sure how
        to fix this. You can check this yourself by attaching a
        jprofiler instance (available for free trial) and looking at
        the object counts.

        I've tracked down the concurrency issue. The Rete node has a
        HashMap of ObjectTypeNodes that is built on the fly, that
        was global to the rulebase. I'll have to make it local to
        the working Memory. I'll fix that today.

        Mark
        s erel wrote:
        Our server creates hundreds of stateful rule sessions
        concurrently. Each created rule seesion is specific to a
        thread. We did not encounter
        any memory problems with the previous version. As I've
        said, it's difficult (actually, impossible) for me to
        provide you with a self contained example
        since the drl is complicated and contains dozens of complex
        objects. However, I am ready to provide you with any
        information that can help
        us in that manner.
        I've also mentioned in the earlier threads the concurrency
        problem I've encountered with AbstractHashTable.
        Can this has something to do with it?

On 7/4/07, *Mark Proctor* <[EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>> wrote:

            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* <[EMAIL PROTECTED]
            <mailto:[EMAIL PROTECTED]>> 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* <[EMAIL PROTECTED]
                <mailto:[EMAIL PROTECTED]>> 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*
                    <[EMAIL PROTECTED]
                    <mailto:[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]
                        <mailto:[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]
                            <mailto:[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 list
                                [email protected] 
<mailto:[email protected]>
                                
https://lists.jboss.org/mailman/listinfo/rules-users

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


                            
------------------------------------------------------------------------

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


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


                        
------------------------------------------------------------------------

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


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



                
------------------------------------------------------------------------

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


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


            
------------------------------------------------------------------------

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


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


        ------------------------------------------------------------------------

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

        ------------------------------------------------------------------------

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


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


    ------------------------------------------------------------------------

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


    _______________________________________________
    rules-users mailing list
    [email protected] <mailto:[email protected]>
    https://lists.jboss.org/mailman/listinfo/rules-users
    <https://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