I've tried it with trunk and the OOM error still happens.

In our project working memories/facts are not shared between threads. One thread does not interfere with another thread rule evaluation.

Do we need shadow proxies for such a scenario?

The document says:
IMPORTANT: disabling shadow facts for a class inhibits the ability of the engine keep track of changes to that class attributes. It means, once asserted, a fact of that class MUST NOT change any of its attributes or the engine may start to present unpredictable behavior. It does not help to use update(). The only way to safely change an attribute of a fact whose shadow fact is disabled is to call modifyRetract() before changing the attribute, change the attribute and call modifyAssert()

What about when retracting in order to assert a new reference? Is it safe to use normal retract() ?



On 10/8/07, Mark Proctor <mproctor@codehaus.org> wrote:
s erel wrote:
I understand that shadow facts are created once during building.
Still, the application crashes in less than a minute when shadow facts are enabled and it runs for hours when they are disabled.

I was assuming it to be related to a corrupted data structure that leaks.

Can you think of such a case?
Are there any limitations for shadow facts (besides them being final)?
Can you try this with trunk and let us know if it still happens?
https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/


On 10/8/07, Mark Proctor < mproctor@codehaus.org> wrote:
s erel wrote:
Hello,

I've posted before regarding this issue.
We currently evaluating drools 4.01 for our project. We've noticed that the perm gen space grows at a rapid rate and that eventually results
in a OOM. When shadow facts are disabled, the problem seems to go away (or at least not as noticeable as before).

Any ideas?
What is the effect of a shadowed object which itself contains complex objects that are also involved in a pattern (through inline eval)?
when the system encounters a new Class, and shadow is enabled, it generates a proxy to that class - however this is a one time operation. The only way that shadow proxies would continue to be created would be if you where continually creating or loading new classes or redefinitions of the old classes.





_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users



_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users


_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users