[rules-users] Drools low concurrency/high synchronization? !NOSIG!

Fernando Meyer fernando at fmeyer.org
Tue Jan 22 08:48:16 EST 2008


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 at 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 at 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 at 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 at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>


-- 
Fernando Meyer http://fmeyer.org
JBoss Rules Core Developer
fernando at fmeyer.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20080122/17147c59/attachment.html 


More information about the rules-users mailing list