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

Mark Proctor mproctor at codehaus.org
Thu Mar 13 07:28:05 EDT 2008


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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20080313/7edec1f5/attachment.html 


More information about the rules-users mailing list