<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>&nbsp;</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>&nbsp;</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 &quot;GetFactsBy<span class="539572406-06092008">Value</span>&quot; ( String $value )<br>&nbsp;&nbsp; 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 &amp; 
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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</font></span></div>
<div dir="ltr" style="MARGIN-RIGHT: 0px"><span class="539572406-06092008"><font face="Arial" size="2"><font size="1">&nbsp;java.lang.StackOverflowError<br>&nbsp;at 
java.io.ObjectStreamClass.processQueue(Unknown Source)<br>&nbsp;at 
java.io.ObjectStreamClass.lookup(Unknown Source)<br>&nbsp;at 
java.io.ObjectOutputStream.writeObject0(Unknown Source)<br>&nbsp;at 
java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)<br>&nbsp;at 
java.io.ObjectOutputStream.writeSerialData(Unknown Source)<br>&nbsp;at 
java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)<br>&nbsp;at 
java.io.ObjectOutputStream.writeObject0(Unknown Source)<br>&nbsp;at 
java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)<br>&nbsp;at 
java.io.ObjectOutputStream.writeSerialData(Unknown Source)<br>&nbsp;at 
java.io.ObjectOutputStream.writeOrdinaryObject(Unknown 
Source</font>)</font></span></div>
<div><span class="539572406-06092008"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span class="539572406-06092008"><font face="Arial" size="2">But if I remove the 
query from rule base, I can&nbsp; insert more then 60,000 objects &amp; then 
serialize WM without any problem. </font></span></div>
<div><span class="539572406-06092008"><font face="Arial" size="2"></font></span>&nbsp;</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>&nbsp;</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 &quot;GetAllFacts&quot; 
( )<br>&nbsp;&nbsp;&nbsp; Fact : DataObject( )<br>end</font></span></div>
<div><font size="1"></font>&nbsp;</div>
<div><span class="539572406-06092008"><font face="Arial" size="1">query 
&quot;GetFactsByDate&quot; ( Calendar $startDate, Calendar $endDate )<br>&nbsp;&nbsp;&nbsp; Fact : 
DataObject( startDate &gt;= $startDate, endDate &lt;= $endDate )<br>end&nbsp; 
</font></span></div>
<div><font size="1"></font>&nbsp;</div>
<div><span class="539572406-06092008"><font face="Arial" size="1">query 
&quot;GetFactsByParamIdTimeRange&quot; ( ArrayList $paramIDs, Calendar $startDate, 
Calendar $endDate )<br>&nbsp;&nbsp;&nbsp; Facts : DataObject( paramID memberOf $paramIDs, 
startDate &gt;= $startDate, endDate &lt;= $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>&nbsp;</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>&nbsp;</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>