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

Leon S leon at farecast.com
Wed Mar 12 23:17:40 EDT 2008


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



-- 
View this message in context: http://www.nabble.com/Drools-low-concurrency-high-synchronization--%21NOSIG%21-tp15018811p16020406.html
Sent from the drools - user mailing list archive at Nabble.com.





More information about the rules-users mailing list