[
http://jira.jboss.com/jira/browse/JBRULES-1013?page=all ]
Edson Tirelli updated JBRULES-1013:
-----------------------------------
Component/s: Drl Parser/Builder
Fix Version/s: FUTURE
(was: 4.0.1)
Affects Version/s: 4.0.0.GA
Two functions with Janino compiler end up with out of memory error
------------------------------------------------------------------
Key: JBRULES-1013
URL:
http://jira.jboss.com/jira/browse/JBRULES-1013
Project: JBoss Rules
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Drl Parser/Builder
Affects Versions: 4.0.0.GA
Environment: Ubuntu Feisty, JDK 1.4 or 1.5, Drools Snapshot
Reporter: Pierre Paysant-Le Roux
Assigned To: Edson Tirelli
Fix For: FUTURE
Compiling a simple rules file containing two functions with janino causes an out of
memory error.
Rules file example :
package test
function boolean func1() {
return true;
}
function boolean func2() {
return true;
}
rule "test"
when
Object()
then
System.out.println("fired");
end
and the code that generate the error :
package test;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;
import org.drools.compiler.DroolsParserException;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
public class Test {
public static void main (String[] args) {
Properties properties = new Properties();
properties.setProperty("drools.dialect.java.compiler",
"JANINO");
PackageBuilderConfiguration pkgBuilderCfg = new
PackageBuilderConfiguration(properties);
PackageBuilder builder = new PackageBuilder(pkgBuilderCfg);
try {
builder.addPackageFromDrl(getSource());
} catch (DroolsParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private static InputStreamReader getSource() {
return new InputStreamReader(Test.class.getResourceAsStream(
"Sample.drl" ));
}
}
After profiling, I identified that the problematic line is the 146 one in class
JaninoJavaCompiler. It causes the loadIClass method to loop with a cycle that I don't
understand. Placing a breakpoint on the line 91 of JaninoJavaCompiler class permit to
observe the loop iterations.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira