[rules-users] Drools 5,3.1 with MVEL 2.1 Concurrency issue

adarsh.chaini at hsbcib.com adarsh.chaini at hsbcib.com
Fri Nov 8 08:22:33 EST 2013


Hi , 

We have  noted another incident in our  testing environment  where  we 
have noted that there is a concurrency issue  with the drools and mvel 
version we are using  where the threads are blocked for a long time 
resulting  the application node/JVM  reach  an unexpected state  which 
needed to be restarted.Could  some one look into this  if there is a known 
defect on this and if it has been resolved in a later version?.

Thread[DSLFpmlDataRecordKeepingTradeViewCacheWorker:5,5,DSLFpmlDataRecordKeepingTradeViewCache]
        java.util.WeakHashMap.get(WeakHashMap.java:470)
        org.mvel2.util.ParseTools.getBestCandidate(ParseTools.java:246)
        org.mvel2.util.ParseTools.getBestCandidate(ParseTools.java:224)
 org.mvel2.compiler.PropertyVerifier.getMethod(PropertyVerifier.java:509)
 org.mvel2.compiler.PropertyVerifier.analyze(PropertyVerifier.java:120)
 org.mvel2.compiler.ExpressionCompiler.verify(ExpressionCompiler.java:381)
 
org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:273)
 org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62)
        org.mvel2.MVEL.compileExpression(MVEL.java:810)
 
org.drools.base.mvel.MVELCompilationUnit.compile(MVELCompilationUnit.java:426)
 
org.drools.base.mvel.MVELCompilationUnit.getCompiledExpression(MVELCompilationUnit.java:243)
 
org.drools.base.dataproviders.MVELDataProvider.compile(MVELDataProvider.java:83)
 
org.drools.rule.MVELDialectRuntimeData.onBeforeExecute(MVELDialectRuntimeData.java:162)
 
org.drools.rule.DialectRuntimeRegistry.onBeforeExecute(DialectRuntimeRegistry.java:138)
 
org.drools.common.AbstractRuleBase.readExternal(AbstractRuleBase.java:295)
 org.drools.reteoo.ReteooRuleBase.readExternal(ReteooRuleBase.java:223)
 
org.drools.impl.KnowledgeBaseImpl.readExternal(KnowledgeBaseImpl.java:116)
 java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1835)
 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1794)
        java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
        java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)



Thread[DSLFpmlDataRecordKeepingCacheWorker:39,5,DSLFpmlDataRecordKeepingCache]
        java.util.WeakHashMap.expungeStaleEntries(WeakHashMap.java:386)
        java.util.WeakHashMap.getTable(WeakHashMap.java:417)
        java.util.WeakHashMap.get(WeakHashMap.java:464)
        org.mvel2.util.ParseTools.getBestCandidate(ParseTools.java:246)
        org.mvel2.util.ParseTools.getBestCandidate(ParseTools.java:224)
 org.mvel2.compiler.PropertyVerifier.getMethod(PropertyVerifier.java:509)
 org.mvel2.compiler.PropertyVerifier.analyze(PropertyVerifier.java:120)
 org.mvel2.compiler.ExpressionCompiler.verify(ExpressionCompiler.java:381)
 
org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:273)
 org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62)
        org.mvel2.MVEL.compileExpression(MVEL.java:810)
 
org.drools.base.mvel.MVELCompilationUnit.compile(MVELCompilationUnit.java:426)
 
org.drools.base.mvel.MVELCompilationUnit.getCompiledExpression(MVELCompilationUnit.java:243)
 
org.drools.base.mvel.MVELPredicateExpression.compile(MVELPredicateExpression.java:69)
 
org.drools.rule.MVELDialectRuntimeData.onBeforeExecute(MVELDialectRuntimeData.java:162)
 
org.drools.rule.DialectRuntimeRegistry.onBeforeExecute(DialectRuntimeRegistry.java:138)
 
org.drools.common.AbstractRuleBase.readExternal(AbstractRuleBase.java:295)
 org.drools.reteoo.ReteooRuleBase.readExternal(ReteooRuleBase.java:223)
 
org.drools.impl.KnowledgeBaseImpl.readExternal(KnowledgeBaseImpl.java:116)
 java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1835)
 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1794)
        java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
        java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)

We have found a similar BUG in the  drools  defect   database 
https://issues.jboss.org/i#browse/DROOLS-81 but the scenarios are bit 
different.

In our case it has happened when we  deserialize the serilized 
KnowledgeBaseImpl by multiple threads and it seems  that the problem is 
due to usage  of a  java.util.WeakHashMap as a class variable in

 org.mvel2.util.ParseTools.getBestCandidate(ParseTools.java:246)



Thanks
 &
Regards,
Adarsh 

SENIOR LEAD DEVELOPMENT SPECIALIST
SCJP, SCWCD 
FINANCE TECHNOLOGY
HSBC BANK PLC HBEU
8 Canada Square,Canary Wharf,
London,E14 5HQ,United Kingdom
------------------------------------------------------
Phone       +44 207914720
Mobile      07595530105
Email.      adarsh.chaini at hsbcib.com
________________________________



From:
Imran Shafiq <ishafiq at redhat.com>
To:
Adarsh CHAINI/IBEU/HSBC at HSBC
Date:
17/09/2013 18:55
Subject:
Drools Community Issue.



Hi Ardash,

I've seen details of the recent issue you have experienced with the 
community Drools product; I was keen to contact you regarding this.

We have been a strategic and global supplier to HSBC for many years, and 
have built our success largely on our ability to provide full enterprise 
services and productised versions of community products, that are fit for 
enterprise use.

In the case of community Drools, our productised version (JBoss BRMS) 
provides a full testing, certification, commercial assurance eco-system, 
and 24*7 SLA support service - which would appear to be ideally positioned 
to help address issues such as that which you are currently experiencing.

Ardash, given the appetite of HSBC to mitigate the risk associated with 
the use of community software alone, I would welcome the opportunity to 
have a brief initial conversation with you concerning the above.

Might there be a suitable number for me to reach you in the coming days?

Kind regards

Imran

Imran Shafiq
Strategic & Global Accounts Team 
Red Hat UK
Direct: +44 (0) 1252 362766
Mobile: +44 (0) 7506 765 287
ishafiq at redhat.com
www.europe.redhat.com







************************************************************
HSBC Bank plc may be solicited in the course of its placement efforts for 
a new issue, by investment clients of the firm for whom the Bank as a firm 
already provides other services. It may equally decide to allocate to its 
own proprietary book or with an associate of HSBC Group. This represents a 
potential conflict of interest. HSBC Bank plc has internal arrangements 
designed to ensure that the firm would give unbiased and full advice to 
the corporate finance client about the valuation and pricing of the 
offering as well as internal systems, controls and procedures to identify 
and manage conflicts of interest.

HSBC Bank plc
Registered Office: 8 Canada Square, London E14 5HQ, United Kingdom
Registered in England - Number 14259
Authorised by the Prudential Regulation Authority and regulated by the 
Financial Conduct Authority and the Prudential Regulation Authority
************************************************************


-----------------------------------------
SAVE PAPER - THINK BEFORE YOU PRINT!

This transmission has been issued by a member of the HSBC Group
"HSBC" for the information of the addressee only and should not be
reproduced and/or distributed to any other person. Each page
attached hereto must be read in conjunction with any disclaimer
which forms part of it. Unless otherwise stated, this transmission
is neither an offer nor the solicitation of an offer to sell or
purchase any investment. Its contents are based on information
obtained from sources believed to be reliable but HSBC makes no
representation and accepts no responsibility or liability as to its
completeness or accuracy.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20131108/e26f491f/attachment-0001.html 


More information about the rules-users mailing list