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 <ingomar.otter(a)valtech.de
> <mailto:ingomar.otter@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 <mailto:ingomar.otter@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 <
http://www.valtech.de/>
>
> Geschäftsführer: Ingo Kriescher
> Amtsgericht Düsseldorf HRB48672
>
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)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
> fernando(a)fmeyer.org <mailto:fernando@fmeyer.org>
> ------------------------------------------------------------------------
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users