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@hsbcib.com
________________________________



From: Imran Shafiq <ishafiq@redhat.com>
To: Adarsh CHAINI/IBEU/HSBC@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@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.