[jboss-jira] [JBoss JIRA] Updated: (JBRULES-1013) Two functions with Janino compiler end up with out of memory error

Pierre Paysant-Le Roux (JIRA) jira-events at lists.jboss.org
Fri Jul 20 08:43:47 EDT 2007


     [ http://jira.jboss.com/jira/browse/JBRULES-1013?page=all ]

Pierre Paysant-Le Roux updated JBRULES-1013:
--------------------------------------------

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

  was:
Compiling a simple rules file containing two functions with janino causes an out of memory error.
Rules file example :
package test
 
package test
 
import test.TestThreads.Fact;

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.


> 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) 
>         Environment: Ubuntu Feisty, JDK 1.4 or 1.5, Drools Snapshot
>            Reporter: Pierre Paysant-Le Roux
>         Assigned To: Mark Proctor
>
> 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

        



More information about the jboss-jira mailing list