<font size=2 face="sans-serif">Hi,</font>
<br>
<br><font size=2 face="sans-serif">We &nbsp;have found that &nbsp;some
of the drools classes are not thread safe and hence causing the whole KB
serialisation &nbsp;and deserialisation &nbsp;issues &nbsp;in a highly
concurrent &nbsp;distributed cluster.</font>
<br>
<br><font size=2 face="sans-serif">The below is an example of one of the
instances we have come across where &nbsp;the &nbsp;usage of a &nbsp;non
thread safe collection as instance variables has caused the issue.</font>
<br>
<br><font size=2 face="sans-serif">Could someone look into this and advise:</font>
<br>
<br><font size=2 face="sans-serif">1) If this has been reported /identified
and logged somewhere &nbsp;as an issue already </font>
<br><font size=2 face="sans-serif">2)If &nbsp;there has been &nbsp;any
fix to problems like this in &nbsp;later versions of <b>&nbsp;5.3.0.Final
?.</b></font>
<br><font size=2 face="sans-serif">3)If not fixed already what &nbsp;is
the process to initiate a fix.</font>
<br>
<br><font size=1 face="Segoe UI">Caused by: java.io.InvalidObjectException:
Illegal mappings count: -1</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; <b>at
java.util.HashMap.readObject(</b></font><font size=1 color=#0062e1 face="Segoe UI"><b><u>HashMap.java:1130</u></b></font><font size=1 face="Segoe UI"><b>)</b></font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
sun.reflect.DelegatingMethodAccessorImpl.invoke(</font><font size=1 color=#0062e1 face="Segoe UI"><u>DelegatingMethodAccessorImpl.java:43</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.lang.reflect.Method.invoke(</font><font size=1 color=#0062e1 face="Segoe UI"><u>Method.java:601</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectStreamClass.invokeReadObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectStreamClass.java:1004</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readSerialData(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1891</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readOrdinaryObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1796</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject0(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1348</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:370</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI"><b>&nbsp; &nbsp; &nbsp; &nbsp; at
org.jbpm.workflow.core.DroolsAction.readExternal(</b></font><font size=1 color=#0062e1 face="Segoe UI"><b><u>DroolsAction.java:61</u></b></font><font size=1 face="Segoe UI"><b>)</b></font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
org.jbpm.workflow.core.impl.DroolsConsequenceAction.readExternal(</font><font size=1 color=#0062e1 face="Segoe UI"><u>DroolsConsequenceAction.java:49</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readExternalData(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1835</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readOrdinaryObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1794</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject0(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1348</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:370</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
org.drools.rule.JavaDialectRuntimeData.readExternal(</font><font size=1 color=#0062e1 face="Segoe UI"><u>JavaDialectRuntimeData.java:182</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readExternalData(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1835</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readOrdinaryObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1794</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject0(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1348</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:370</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.util.HashMap.readObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>HashMap.java:1155</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
sun.reflect.DelegatingMethodAccessorImpl.invoke(</font><font size=1 color=#0062e1 face="Segoe UI"><u>DelegatingMethodAccessorImpl.java:43</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.lang.reflect.Method.invoke(</font><font size=1 color=#0062e1 face="Segoe UI"><u>Method.java:601</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectStreamClass.invokeReadObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectStreamClass.java:1004</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readSerialData(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1891</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readOrdinaryObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1796</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject0(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1348</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:370</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
org.drools.rule.DialectRuntimeRegistry.readExternal(</font><font size=1 color=#0062e1 face="Segoe UI"><u>DialectRuntimeRegistry.java:59</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readExternalData(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1835</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readOrdinaryObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1794</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject0(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1348</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:370</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
org.drools.rule.Package.readExternal(</font><font size=1 color=#0062e1 face="Segoe UI"><u>Package.java:197</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readExternalData(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1835</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readOrdinaryObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1794</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject0(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1348</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:370</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.util.HashMap.readObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>HashMap.java:1155</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
sun.reflect.DelegatingMethodAccessorImpl.invoke(</font><font size=1 color=#0062e1 face="Segoe UI"><u>DelegatingMethodAccessorImpl.java:43</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.lang.reflect.Method.invoke(</font><font size=1 color=#0062e1 face="Segoe UI"><u>Method.java:601</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectStreamClass.invokeReadObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectStreamClass.java:1004</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readSerialData(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1891</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readOrdinaryObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1796</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject0(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1348</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:370</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
org.drools.common.AbstractRuleBase.readExternal(</font><font size=1 color=#0062e1 face="Segoe UI"><u>AbstractRuleBase.java:270</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
org.drools.reteoo.ReteooRuleBase.readExternal(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ReteooRuleBase.java:223</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
org.drools.impl.KnowledgeBaseImpl.readExternal(</font><font size=1 color=#0062e1 face="Segoe UI"><u>KnowledgeBaseImpl.java:116</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readExternalData(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1835</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readOrdinaryObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1794</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject0(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:1348</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
java.io.ObjectInputStream.readObject(</font><font size=1 color=#0062e1 face="Segoe UI"><u>ObjectInputStream.java:370</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
com.hsbc.gbm.dsl.domain.DSLRuleSet$Serializer.createInstance(</font><font size=1 color=#0062e1 face="Segoe UI"><u>DSLRuleSet.java:328</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
com.hsbc.gbm.dsl.domain.DSLRuleSet$Serializer.createInstance(</font><font size=1 color=#0062e1 face="Segoe UI"><u>DSLRuleSet.java:1</u></font><font size=1 face="Segoe UI">)</font>
<br><font size=1 face="Segoe UI">&nbsp; &nbsp; &nbsp; &nbsp; at
com.hsbc.gbm.dsl.domain.AbstractSerializer.deserialize(</font><font size=1 color=#0062e1 face="Segoe UI"><u>AbstractSerializer.java:144</u></font><font size=1 face="Segoe UI">)</font><font size=2 face="sans-serif"><br>
</font>
<br><font size=2 face="sans-serif">Thanks and regards,<br>
</font>
<br><font size=2 color=red face="Arial"><b>Adarsh CHAINI </b></font>
<br><font size=1 face="Arial">SENIOR LEAD DEVELOPMENT SPECIALIST | HSBC
Bank Plc<br>
8 Canada Square, London E14 5HQ, UK</font>
<table>
<tr>
<td><font size=1 color=red face="Arial">_______________________________________________</font>
<br><font size=1><br>
</font>
<table width=100%>
<tr>
<td width=12%>
<td width=87%>
<tr>
<td><font size=1 color=#4f4f4f face="Arial">Phone</font>
<td><font size=1 color=#4f4f4f face="Arial">Int: (0)79914720 Ext: +44 (0)20
79914720</font>
<tr>
<td><font size=1 color=#4f4f4f face="Arial">Mobile</font>
<td><font size=1 color=#4f4f4f face="Arial">+44(0)7595530105</font>
<tr>
<td><font size=1 color=#4f4f4f face="Arial">Email</font>
<td><a href=mailto:adarsh.chaini@hsbcib.com><font size=1 color=red face="Arial"><u>adarsh.chaini@hsbcib.com</u></font></a></table>
<br>
<br><font size=1 color=red face="Arial">_______________________________________________</font>
<br><font size=1 color=#008000 face="Arial">Protect our environment - please
only print this if you have to!</font></table>
<br><font size=2 face="sans-serif"><br>
<br>
************************************************************<br>
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.<br>
<br>
HSBC Bank plc<br>
Registered Office: 8 Canada Square, London E14 5HQ, United Kingdom<br>
Registered in England - Number 14259<br>
Authorised by the Prudential Regulation Authority and regulated by the
Financial Conduct Authority and the Prudential Regulation Authority<br>
************************************************************<br>
</font>

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