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 <ingomar.otter(a)valtech.de> 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
org.drools.base.mvel.MVELPredicateExpression@bb981e
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)
atxxxx.DroolsPD.validate(DroolsPD.java:66)
at xxxx.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
ingomar.otter(a)valtech.de
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(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Fernando Meyer
http://fmeyer.org
JBoss Rules Core Developer
fernando(a)fmeyer.org