Re: [rules-users] Drools low concurrency/high synchronization? !NOSIG!
Leon S wrote: We ran into this problem after upgrading from 3.0.* to 4.0.4. Is there a JIRA issue filed for this? I see a few MVEL-related issues scoped for 4.0.5 and 5.0 releases, but nothing that looks like specifically covering this problem. The user who reported this has not provided more information on how this is happening, nor have they confirmed that is or is not fixed in 4.0.x. My advice is quickly test your code against 4.0.x and let us know if there is a problem. There is no way we can determine if there is or isn't a problem from the stack trace given at the start of this conversation thread. http://anonsvn.labs.jboss.com/labs/jbossrules/branches/4.0.x/ Thanks, Leon Mark Proctor wrote: This looks different to what was fixed in 4.0.4. I'm cc'ing brockm to get his feedback as it looks like an MVEL bug on accessors. Mark Fernando Meyer wrote: Hi Ingomar, Which drools version are you using? We made improvements on 4.0.4, that fixes concurrency issues on mvel core, so if you aren't using it please do an update and try test against your environment. Please let me know if your problems go away when you upgrade. Thanks On Jan 22, 2008 11:13 AM, Ingomar Otter [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: Folks, I am currently trying to scale our implementation by farming out request into mutliple threads. I am on a 4 CPU Mac. A few things I am wondering about: 1. Although I see an increase in CPU load when going from single to multi-threaded processing the throughput increased marginally. I am pretty sure that my measurements are correct. I have checked the GC and this is not the source of congestion. My question here is whether Drools is using lot's of synchronization that may explain this. 2. When I share the RuleBase accross threads (which I think is valid?) I get interesting errors during execution. eg: org.drools.RuntimeDroolsException : Exception executing predicate [EMAIL PROTECTED] atorg.drools.rule.PredicateConstraint.isAllowedCachedRight( PredicateConstraint.java:246) at org.drools.common.TripleBetaConstraints.isAllowedCachedRight(TripleBetaConstraints.java:200) atorg.drools.reteoo.JoinNode.assertObject(JoinNode.java:150) atorg.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:318) atorg.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:153) at org.drools.reteoo.Rete.assertObject(Rete.java:175) atorg.drools.reteoo.ReteooRuleBase.assertObject (ReteooRuleBase.java:192) at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:909) atorg.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:881) atorg.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:682) at.DroolsPD.validate(DroolsPD.java:66) at .DroolsMTRunner.run(DroolsMTRunner.java:30) at java.lang.Thread.run(Thread.java:552) Caused by: org.mvel.CompileException: cannot invoke getter: getSAClass [declr.class: xxx.AbstractSA; act.class: null] atorg.mvel.optimizers.impl.refl.GetterAccessor.getValue( GetterAccessor.java:52) at org.mvel.optimizers.impl.refl.VariableAccessor.getValue(VariableAccessor.java:39) at org.mvel.ast.VariableDeepPropertyNode.getReducedValueAccelerated(VariableDeepPropertyNode.java:22) atorg.mvel.ast.PropertyASTNode.getReducedValueAccelerated(PropertyASTNode.java:21) at org.mvel.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:21) at org.mvel.MVELRuntime.execute(MVELRuntime.java:88) at org.mvel.CompiledExpression.getValue(CompiledExpression.java:111) atorg.mvel.MVEL.executeExpression(MVEL.java:235) at org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpression.java:36) atorg.drools.rule.PredicateConstraint.isAllowedCachedRight(PredicateConstraint.java:240) ... 13 more Caused by: java.lang.NullPointerException atsun.reflect.GeneratedMethodAccessor6.invoke (Unknown Source) atsun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:25) atjava.lang.reflect.Method.invoke( Method.java:324) at org.mvel.optimizers.impl.refl.GetterAccessor.getValue(GetterAccessor.java:42) ... 22 more Details: * I use StatelessSessions which are private to the threads * No data is shared between threads (with the exception of the RuleBase, as outline above) * I am on JDK 1.5 I would be grateful for any pointers for 'correct' use of Drools in an MT environment. Cheers, Ingomar Ingomar Otter Chief Technology Officer [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] Mobile: +49 172 2367867 Valtech GmbH Bahnstraße 16 40212
Re: [rules-users] Drools low concurrency/high synchronization? !NOSIG!
Leon, This specific problem was fixed in the 4.0.x branch a few weeks ago. I believe we covered all the scenarios, but in case we missed any, please let us know asap. []s Edson 2008/3/13, Leon Stein [EMAIL PROTECTED]: I'll test with the latest from 4.0.x branch, in the meanwhile, more info on the actual error: Stack trace: org.drools.RuntimeDroolsException: Exception executing predicate [EMAIL PROTECTED] at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java :216) at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:132) at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject( CompositeObjectSinkAdapter.java:318) at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:153) at org.drools.reteoo.Rete.assertObject(Rete.java:175) at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192) at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java :71) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java :909) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java :881) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java :682) removed Caused by: org.mvel.CompileException: cannot invoke getter: getBar [declr.class: org.example.Foo; act.class: null] at org.mvel.optimizers.impl.refl.GetterAccessor.getValue(GetterAccessor.java :52) at org.mvel.optimizers.impl.refl.VariableAccessor.getValue( VariableAccessor.java:39) at org.mvel.ast.VariableDeepPropertyNode.getReducedValueAccelerated( VariableDeepPropertyNode.java:22) at org.mvel.ast.PropertyASTNode.getReducedValueAccelerated( PropertyASTNode.java:21) at org.mvel.ast.BinaryOperation.getReducedValueAccelerated( BinaryOperation.java:21) at org.mvel.MVELRuntime.execute(MVELRuntime.java:88) at org.mvel.CompiledExpression.getValue(CompiledExpression.java :111) at org.mvel.MVEL.executeExpression(MVEL.java:235) at org.drools.base.mvel.MVELPredicateExpression.evaluate( MVELPredicateExpression.java:36) at org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java :210) ... 41 more Caused by: java.lang.NullPointerException at sun.reflect.GeneratedMethodAccessor292.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.mvel.optimizers.impl.refl.GetterAccessor.getValue(GetterAccessor.java :42) ... 50 more - Only occurs on multi-cpu boxes (Linux, Sun JRE 1.5.0_06, 64 bit) under heavy load with simultaneous sessions running against same rule base with thousands of facts in each session. - The rule where exception occurs traverses properties of inserted object (foo.bar expression): rule XYZ when foo : FooHolder(foo.bar == Bar.GREEN) ... then ... end The traversed objects are not shared between sessions, and properties are never null. Leon Mark Proctor wrote: Leon S wrote: We ran into this problem after upgrading from 3.0.* to 4.0.4. Is there a JIRA issue filed for this? I see a few MVEL-related issues scoped for 4.0.5 and 5.0 releases, but nothing that looks like specifically covering this problem. The user who reported this has not provided more information on how this is happening, nor have they confirmed that is or is not fixed in 4.0.x. My advice is quickly test your code against 4.0.x and let us know if there is a problem. There is no way we can determine if there is or isn't a problem from the stack trace given at the start of this conversation thread. http://anonsvn.labs.jboss.com/labs/jbossrules/branches/4.0.x/ Thanks, Leon Mark Proctor wrote: This looks different to what was fixed in 4.0.4. I'm cc'ing brockm to get his feedback as it looks like an MVEL bug on accessors. Mark Fernando Meyer wrote: Hi Ingomar, Which drools version are you using? We made improvements on 4.0.4, that fixes concurrency issues on mvel core, so if you aren't using it please do an update and try test against your environment. Please let me know if your problems go away when you upgrade. Thanks On Jan 22, 2008 11:13 AM, Ingomar Otter [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: Folks, I am currently trying to scale our implementation by farming out request into mutliple threads. I am on a 4 CPU Mac. A few things I am wondering about: 1. Although I see an increase in CPU load when going from single to multi-threaded processing the throughput increased marginally. I am pretty sure that my measurements are correct. I have checked
Re: [rules-users] Drools low concurrency/high synchronization? !NOSIG!
We ran into this problem after upgrading from 3.0.* to 4.0.4. Is there a JIRA issue filed for this? I see a few MVEL-related issues scoped for 4.0.5 and 5.0 releases, but nothing that looks like specifically covering this problem. Thanks, Leon Mark Proctor wrote: This looks different to what was fixed in 4.0.4. I'm cc'ing brockm to get his feedback as it looks like an MVEL bug on accessors. Mark Fernando Meyer wrote: Hi Ingomar, Which drools version are you using? We made improvements on 4.0.4, that fixes concurrency issues on mvel core, so if you aren't using it please do an update and try test against your environment. Please let me know if your problems go away when you upgrade. Thanks On Jan 22, 2008 11:13 AM, Ingomar Otter [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: Folks, I am currently trying to scale our implementation by farming out request into mutliple threads. I am on a 4 CPU Mac. A few things I am wondering about: 1. Although I see an increase in CPU load when going from single to multi-threaded processing the throughput increased marginally. I am pretty sure that my measurements are correct. I have checked the GC and this is not the source of congestion. My question here is whether Drools is using lot's of synchronization that may explain this. 2. When I share the RuleBase accross threads (which I think is valid?) I get interesting errors during execution. eg: org.drools.RuntimeDroolsException : Exception executing predicate [EMAIL PROTECTED] atorg.drools.rule.PredicateConstraint.isAllowedCachedRight( PredicateConstraint.java:246) at org.drools.common.TripleBetaConstraints.isAllowedCachedRight(TripleBetaConstraints.java:200) atorg.drools.reteoo.JoinNode.assertObject(JoinNode.java:150) atorg.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:318) atorg.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:153) at org.drools.reteoo.Rete.assertObject(Rete.java:175) atorg.drools.reteoo.ReteooRuleBase.assertObject (ReteooRuleBase.java:192) at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:909) atorg.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:881) atorg.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:682) at.DroolsPD.validate(DroolsPD.java:66) at .DroolsMTRunner.run(DroolsMTRunner.java:30) at java.lang.Thread.run(Thread.java:552) Caused by: org.mvel.CompileException: cannot invoke getter: getSAClass [declr.class: xxx.AbstractSA; act.class: null] atorg.mvel.optimizers.impl.refl.GetterAccessor.getValue( GetterAccessor.java:52) at org.mvel.optimizers.impl.refl.VariableAccessor.getValue(VariableAccessor.java:39) at org.mvel.ast.VariableDeepPropertyNode.getReducedValueAccelerated(VariableDeepPropertyNode.java:22) atorg.mvel.ast.PropertyASTNode.getReducedValueAccelerated(PropertyASTNode.java:21) at org.mvel.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:21) at org.mvel.MVELRuntime.execute(MVELRuntime.java:88) at org.mvel.CompiledExpression.getValue(CompiledExpression.java:111) atorg.mvel.MVEL.executeExpression(MVEL.java:235) at org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpression.java:36) atorg.drools.rule.PredicateConstraint.isAllowedCachedRight(PredicateConstraint.java:240) ... 13 more Caused by: java.lang.NullPointerException atsun.reflect.GeneratedMethodAccessor6.invoke (Unknown Source) atsun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:25) atjava.lang.reflect.Method.invoke( Method.java:324) at org.mvel.optimizers.impl.refl.GetterAccessor.getValue(GetterAccessor.java:42) ... 22 more Details: * I use StatelessSessions which are private to the threads * No data is shared between threads (with the exception of the RuleBase, as outline above) * I am on JDK 1.5 I would be grateful for any pointers for 'correct' use of Drools in an MT environment. Cheers, Ingomar Ingomar Otter Chief Technology Officer [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] Mobile: +49 172 2367867 Valtech GmbH Bahnstraße 16 40212 Düsseldorf Germany Phone: +49 (0)211 179237-0 Fax: +49 211 179237-19 www.valtech.de http://www.valtech.de/ Geschäftsführer: Ingo Kriescher Amtsgericht Düsseldorf HRB48672 ___ rules-users mailing list rules-users@lists.jboss.org mailto:rules-users@lists.jboss.org
[rules-users] Drools low concurrency/high synchronization? !NOSIG!
Folks, I am currently trying to scale our implementation by farming out request into mutliple threads. I am on a 4 CPU Mac. A few things I am wondering about: 1. Although I see an increase in CPU load when going from single to multi-threaded processing the throughput increased marginally. I am pretty sure that my measurements are correct. I have checked the GC and this is not the source of congestion. My question here is whether Drools is using lot's of synchronization that may explain this. 2. When I share the RuleBase accross threads (which I think is valid?) I get interesting errors during execution. eg: org.drools.RuntimeDroolsException: Exception executing predicate [EMAIL PROTECTED] at org .drools .rule .PredicateConstraint.isAllowedCachedRight(PredicateConstraint.java:246) at org .drools .common .TripleBetaConstraints.isAllowedCachedRight(TripleBetaConstraints.java: 200) at org.drools.reteoo.JoinNode.assertObject(JoinNode.java:150) at org .drools .reteoo .CompositeObjectSinkAdapter .propagateAssertObject(CompositeObjectSinkAdapter.java:318) at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java: 153) at org.drools.reteoo.Rete.assertObject(Rete.java:175) at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java: 192) at org .drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71) at org .drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java: 909) at org .drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java: 881) at org .drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java: 682) at .DroolsPD.validate(DroolsPD.java:66) at .DroolsMTRunner.run(DroolsMTRunner.java:30) at java.lang.Thread.run(Thread.java:552) Caused by: org.mvel.CompileException: cannot invoke getter: getSAClass [declr.class: xxx.AbstractSA; act.class: null] at org .mvel.optimizers.impl.refl.GetterAccessor.getValue(GetterAccessor.java: 52) at org .mvel .optimizers.impl.refl.VariableAccessor.getValue(VariableAccessor.java: 39) at org .mvel .ast .VariableDeepPropertyNode .getReducedValueAccelerated(VariableDeepPropertyNode.java:22) at org .mvel .ast.PropertyASTNode.getReducedValueAccelerated(PropertyASTNode.java:21) at org .mvel .ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:21) at org.mvel.MVELRuntime.execute(MVELRuntime.java:88) at org.mvel.CompiledExpression.getValue(CompiledExpression.java:111) at org.mvel.MVEL.executeExpression(MVEL.java:235) at org .drools .base .mvel.MVELPredicateExpression.evaluate(MVELPredicateExpression.java:36) at org .drools .rule .PredicateConstraint.isAllowedCachedRight(PredicateConstraint.java:240) ... 13 more Caused by: java.lang.NullPointerException at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) at sun .reflect .DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25) at java.lang.reflect.Method.invoke(Method.java:324) at org .mvel.optimizers.impl.refl.GetterAccessor.getValue(GetterAccessor.java: 42) ... 22 more Details: * I use StatelessSessions which are private to the threads * No data is shared between threads (with the exception of the RuleBase, as outline above) * I am on JDK 1.5 I would be grateful for any pointers for 'correct' use of Drools in an MT environment. Cheers, Ingomar -- Ingomar Otter Chief Technology Officer mailto:[EMAIL PROTECTED] Mobile: +49 172 2367867 Valtech GmbH Bahnstraße 16 40212 Düsseldorf Germany Phone: +49 (0)211 179237-0 Fax: +49 211 179237-19 http://www.valtech.de Geschäftsführer: Ingo Kriescher Amtsgericht Düsseldorf HRB48672 ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Drools low concurrency/high synchronization? !NOSIG!
Hi Ingomar, Which drools version are you using? We made improvements on 4.0.4, that fixes concurrency issues on mvel core, so if you aren't using it please do an update and try test against your environment. Please let me know if your problems go away when you upgrade. Thanks On Jan 22, 2008 11:13 AM, Ingomar Otter [EMAIL PROTECTED] wrote: Folks,I am currently trying to scale our implementation by farming out request into mutliple threads. I am on a 4 CPU Mac. A few things I am wondering about: 1. Although I see an increase in CPU load when going from single to multi-threaded processing the throughput increased marginally. I am pretty sure that my measurements are correct. I have checked the GC and this is not the source of congestion. My question here is whether Drools is using lot's of synchronization that may explain this. 2. When I share the RuleBase accross threads (which I think is valid?) I get interesting errors during execution. eg: org.drools.RuntimeDroolsException: Exception executing predicate [EMAIL PROTECTED] atorg.drools.rule.PredicateConstraint.isAllowedCachedRight( PredicateConstraint.java:246) at org.drools.common.TripleBetaConstraints.isAllowedCachedRight( TripleBetaConstraints.java:200) atorg.drools.reteoo.JoinNode.assertObject(JoinNode.java:150) atorg.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject( CompositeObjectSinkAdapter.java:318) atorg.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:153) at org.drools.reteoo.Rete.assertObject(Rete.java:175) atorg.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192) at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java :71) at org.drools.common.AbstractWorkingMemory.insert( AbstractWorkingMemory.java:909) atorg.drools.common.AbstractWorkingMemory.insert( AbstractWorkingMemory.java:881) atorg.drools.common.AbstractWorkingMemory.insert( AbstractWorkingMemory.java:682) at.DroolsPD.validate(DroolsPD.java:66) at .DroolsMTRunner.run(DroolsMTRunner.java:30) at java.lang.Thread.run(Thread.java:552) Caused by: org.mvel.CompileException: cannot invoke getter: getSAClass [ declr.class: xxx.AbstractSA; act.class: null] atorg.mvel.optimizers.impl.refl.GetterAccessor.getValue( GetterAccessor.java:52) at org.mvel.optimizers.impl.refl.VariableAccessor.getValue( VariableAccessor.java:39) at org.mvel.ast.VariableDeepPropertyNode.getReducedValueAccelerated( VariableDeepPropertyNode.java:22) atorg.mvel.ast.PropertyASTNode.getReducedValueAccelerated( PropertyASTNode.java:21) at org.mvel.ast.BinaryOperation.getReducedValueAccelerated( BinaryOperation.java:21) at org.mvel.MVELRuntime.execute(MVELRuntime.java:88) at org.mvel.CompiledExpression.getValue(CompiledExpression.java:111) atorg.mvel.MVEL.executeExpression(MVEL.java:235) at org.drools.base.mvel.MVELPredicateExpression.evaluate( MVELPredicateExpression.java:36) atorg.drools.rule.PredicateConstraint.isAllowedCachedRight( PredicateConstraint.java:240) ... 13 more Caused by: java.lang.NullPointerException atsun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) atsun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:25) atjava.lang.reflect.Method.invoke(Method.java:324) at org.mvel.optimizers.impl.refl.GetterAccessor.getValue( GetterAccessor.java:42) ... 22 more Details: * I use StatelessSessions which are private to the threads * No data is shared between threads (with the exception of the RuleBase, as outline above) * I am on JDK 1.5 I would be grateful for any pointers for 'correct' use of Drools in an MT environment. Cheers, Ingomar Ingomar Otter Chief Technology Officer [EMAIL PROTECTED] Mobile: +49 172 2367867 Valtech GmbH Bahnstraße 16 40212 Düsseldorf Germany Phone: +49 (0)211 179237-0 Fax: +49 211 179237-19 www.valtech.de Geschäftsführer: Ingo Kriescher Amtsgericht Düsseldorf HRB48672 ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Fernando Meyer http://fmeyer.org JBoss Rules Core Developer [EMAIL PROTECTED] ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Drools low concurrency/high synchronization? !NOSIG!
This looks different to what was fixed in 4.0.4. I'm cc'ing brockm to get his feedback as it looks like an MVEL bug on accessors. Mark Fernando Meyer wrote: Hi Ingomar, Which drools version are you using? We made improvements on 4.0.4, that fixes concurrency issues on mvel core, so if you aren't using it please do an update and try test against your environment. Please let me know if your problems go away when you upgrade. Thanks On Jan 22, 2008 11:13 AM, Ingomar Otter [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: Folks, I am currently trying to scale our implementation by farming out request into mutliple threads. I am on a 4 CPU Mac. A few things I am wondering about: 1. Although I see an increase in CPU load when going from single to multi-threaded processing the throughput increased marginally. I am pretty sure that my measurements are correct. I have checked the GC and this is not the source of congestion. My question here is whether Drools is using lot's of synchronization that may explain this. 2. When I share the RuleBase accross threads (which I think is valid?) I get interesting errors during execution. eg: org.drools.RuntimeDroolsException : Exception executing predicate [EMAIL PROTECTED] atorg.drools.rule.PredicateConstraint.isAllowedCachedRight( PredicateConstraint.java:246) at org.drools.common.TripleBetaConstraints.isAllowedCachedRight(TripleBetaConstraints.java:200) atorg.drools.reteoo.JoinNode.assertObject(JoinNode.java:150) atorg.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:318) atorg.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:153) at org.drools.reteoo.Rete.assertObject(Rete.java:175) atorg.drools.reteoo.ReteooRuleBase.assertObject (ReteooRuleBase.java:192) at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71) at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:909) atorg.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:881) atorg.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:682) at.DroolsPD.validate(DroolsPD.java:66) at .DroolsMTRunner.run(DroolsMTRunner.java:30) at java.lang.Thread.run(Thread.java:552) Caused by: org.mvel.CompileException: cannot invoke getter: getSAClass [declr.class: xxx.AbstractSA; act.class: null] atorg.mvel.optimizers.impl.refl.GetterAccessor.getValue( GetterAccessor.java:52) at org.mvel.optimizers.impl.refl.VariableAccessor.getValue(VariableAccessor.java:39) at org.mvel.ast.VariableDeepPropertyNode.getReducedValueAccelerated(VariableDeepPropertyNode.java:22) atorg.mvel.ast.PropertyASTNode.getReducedValueAccelerated(PropertyASTNode.java:21) at org.mvel.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:21) at org.mvel.MVELRuntime.execute(MVELRuntime.java:88) at org.mvel.CompiledExpression.getValue(CompiledExpression.java:111) atorg.mvel.MVEL.executeExpression(MVEL.java:235) at org.drools.base.mvel.MVELPredicateExpression.evaluate(MVELPredicateExpression.java:36) atorg.drools.rule.PredicateConstraint.isAllowedCachedRight(PredicateConstraint.java:240) ... 13 more Caused by: java.lang.NullPointerException atsun.reflect.GeneratedMethodAccessor6.invoke (Unknown Source) atsun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:25) atjava.lang.reflect.Method.invoke( Method.java:324) at org.mvel.optimizers.impl.refl.GetterAccessor.getValue(GetterAccessor.java:42) ... 22 more Details: * I use StatelessSessions which are private to the threads * No data is shared between threads (with the exception of the RuleBase, as outline above) * I am on JDK 1.5 I would be grateful for any pointers for 'correct' use of Drools in an MT environment. Cheers, Ingomar Ingomar Otter Chief Technology Officer [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] Mobile: +49 172 2367867 Valtech GmbH Bahnstraße 16 40212 Düsseldorf Germany Phone: +49 (0)211 179237-0 Fax: +49 211 179237-19 www.valtech.de http://www.valtech.de/ Geschäftsführer: Ingo Kriescher Amtsgericht Düsseldorf HRB48672 ___ rules-users mailing list rules-users@lists.jboss.org mailto:rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Fernando Meyer http://fmeyer.org JBoss Rules Core Developer [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] ___ rules-users mailing list rules-users@lists.jboss.org