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
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)
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
[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
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