[rules-users] Open file leak in Drools Compiler

Greg Barton greg_barton at yahoo.com
Wed Mar 16 13:47:13 EDT 2011


Yes, but it's not a full blown leak.  Wrapping stream use in a try/finally block is best.  Feel free and open a JIRA to fix it.  There may be other instances.

--- On Wed, 3/16/11, Chris Selwyn <chris at selwyn-family.me.uk> wrote:

> From: Chris Selwyn <chris at selwyn-family.me.uk>
> Subject: Re: [rules-users] Open file leak in Drools Compiler
> To: "Rules Users List" <rules-users at lists.jboss.org>
> Cc: "Greg Barton" <greg_barton at yahoo.com>
> Date: Wednesday, March 16, 2011, 12:18 PM
> Isn't it regarded as bad practice to
> rely on the finalize() method 
> called by the garbage collector to release such resources?
> 
> Chris
> 
> On 16/03/2011 17:04, Greg Barton wrote:
> > Only if garbage collection never runs.  Then
> you'd already be in trouble. :)
> >
> > --- On Wed, 3/16/11, Chris Selwyn<chris at selwyn-family.me.uk> wrote:
> >
> >> From: Chris Selwyn<chris at selwyn-family.me.uk>
> >> Subject: [rules-users] Open file leak in Drools
> Compiler
> >> To: "Drools users"<rules-users at lists.jboss.org>
> >> Date: Wednesday, March 16, 2011, 11:49 AM
> >> I am running Drools (actually JBoss
> >> Rules 5.1.0 ) in Glassfish.
> >>
> >> My deployable is an EJB that uses a
> >> StatelessKnowledgeSession to run
> >> some rules that I get from a KnowledgeAgent that
> has a
> >> Changeset with a
> >> .drl in it.
> >> Therefore, I have placed the drools compiler into
> the
> >> deployable and it
> >> all appears to work.
> >>
> >> Glassfish has a clever little mechanism that, when
> you
> >> unload a
> >> deployable that had some open streams, it tells
> you all
> >> about it (and
> >> kindly closes them).
> >>
> >> Glassfish is reporting that InputStreams are being
> left
> >> open that were
> >> opened in the isPackage() method of
> >>
> org.drools.commons.jci.compilers.EclipseJavaCompiler.
> >> That method has the following code in it:-
> >>
> >>           
>    
> >>     final InputStream is =
> >>
> pClassLoader.getResourceAsStream(ClassUtils.convertClassToResourcePath(pClazzName));
> >>           
>    
> >>     if (is != null) {
> >>             
>    
> >>       return false;
> >>           
>    
> >>     }
> >>
> >> So, when "is" is not null (i.e. open), it is
> forgotten
> >> about and not closed.
> >>
> >> Isn't this a potential file handle leak?
> >>
> >> Chris Selwyn
> >>
> >> _______________________________________________
> >> rules-users mailing list
> >> rules-users at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/rules-users
> >>
> >
> >
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
> > -----
> > No virus found in this message.
> > Checked by AVG - www.avg.com
> > Version: 10.0.1204 / Virus Database: 1498/3509 -
> Release Date: 03/15/11
> >
> 


      




More information about the rules-users mailing list