<div dir="ltr"><br><div><div><span class="539572406-06092008"><font face="Arial" size="2">Hi,</font></span></div>
<div><span class="539572406-06092008"><font face="Arial" size="2"></font></span> </div>
<div><span class="539572406-06092008"><font face="Arial" size="2">I am facing an issue
with Drools Query.</font></span></div>
<div><span class="539572406-06092008"><font face="Arial" size="2">Our application
serializes working memory after its each execution, to save the rule engine
state. </font></span></div>
<div><span class="539572406-06092008"><font face="Arial" size="2"></font></span> </div>
<div><span class="539572406-06092008"><font face="Arial" size="2">Our rule base
contains a Query along with other rules:</font></span></div>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<div><span class="539572406-06092008"><font size="2"><font size="2">
<p><font face="Arial" size="1">query "GetFactsBy<span class="539572406-06092008">Value</span>" ( String $value )<br> Facts :
DataObject( stringValue == $value
)<br>end</font></p></font></font></span></div></blockquote></blockquote>
<div><span class="539572406-06092008"><font face="Arial" size="2">With this query
present in Rule Base, if I insert more then 900 instances of DataObject &
then try to serialize the working memory... serialization fails with bellow
error:</font></span></div>
<div><span class="539572406-06092008"><font face="Arial" size="2">
</font></span></div>
<div dir="ltr" style="MARGIN-RIGHT: 0px"><span class="539572406-06092008"><font face="Arial" size="2"><font size="1"> java.lang.StackOverflowError<br> at
java.io.ObjectStreamClass.processQueue(Unknown Source)<br> at
java.io.ObjectStreamClass.lookup(Unknown Source)<br> at
java.io.ObjectOutputStream.writeObject0(Unknown Source)<br> at
java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)<br> at
java.io.ObjectOutputStream.writeSerialData(Unknown Source)<br> at
java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)<br> at
java.io.ObjectOutputStream.writeObject0(Unknown Source)<br> at
java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)<br> at
java.io.ObjectOutputStream.writeSerialData(Unknown Source)<br> at
java.io.ObjectOutputStream.writeOrdinaryObject(Unknown
Source</font>)</font></span></div>
<div><span class="539572406-06092008"><font face="Arial" size="2"></font></span> </div>
<div><span class="539572406-06092008"><font face="Arial" size="2">But if I remove the
query from rule base, I can insert more then 60,000 objects & then
serialize WM without any problem. </font></span></div>
<div><span class="539572406-06092008"><font face="Arial" size="2"></font></span> </div>
<div><span class="539572406-06092008"><font face="Arial" size="2">Not sure if this is
a bug in Query feature or problem in the way I have written the Query. I have
attached test files.</font></span></div>
<div><span class="539572406-06092008"><font face="Arial" size="2"></font></span> </div>
<div><span class="539572406-06092008"><font face="Arial" size="2">We are using few
more queries in our RuleBase like:</font></span></div>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<div><span class="539572406-06092008"><font face="Arial" size="1">query "GetAllFacts"
( )<br> Fact : DataObject( )<br>end</font></span></div>
<div><font size="1"></font> </div>
<div><span class="539572406-06092008"><font face="Arial" size="1">query
"GetFactsByDate" ( Calendar $startDate, Calendar $endDate )<br> Fact :
DataObject( startDate >= $startDate, endDate <= $endDate )<br>end
</font></span></div>
<div><font size="1"></font> </div>
<div><span class="539572406-06092008"><font face="Arial" size="1">query
"GetFactsByParamIdTimeRange" ( ArrayList $paramIDs, Calendar $startDate,
Calendar $endDate )<br> Facts : DataObject( paramID memberOf $paramIDs,
startDate >= $startDate, endDate <= $endDate
)<br>end</font></span></div></blockquote>
<div dir="ltr"><span class="539572406-06092008"><font face="Arial" size="2">Not sure if
they also may fail in some special scenarios. Atleast last 3 Queries we are
planning to use in our production. Is it ok to use those? </font></span></div>
<div><span class="539572406-06092008"><font face="Arial" size="2"></font></span> </div>
<div><span class="539572406-06092008"><font face="Arial" size="2">Execution
Environment:</font></span></div>
<div><span class="539572406-06092008"><font face="Arial" size="2">OS: Windows/
Solaris</font></span></div>
<div><span class="539572406-06092008"><font face="Arial" size="2">Drools
4.0.7</font></span></div>
<div><span class="539572406-06092008"><font face="Arial" size="2">jre1.5.0_09</font></span></div>
<div><span class="539572406-06092008"><font face="Arial" size="2"></font></span> </div>
<div><span class="539572406-06092008"><font face="Arial" size="2">Thanks</font></span></div>
<div><span class="539572406-06092008"><font face="Arial" size="2">Siddhartha</font></span></div></div></div>