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

2008-03-13 Thread Mark Proctor

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!

2008-03-13 Thread Edson Tirelli
   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!

2008-03-12 Thread Leon S

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!

2008-01-22 Thread Ingomar Otter

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!

2008-01-22 Thread Fernando Meyer
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!

2008-01-22 Thread Mark Proctor
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