Andy Wilkinson created GROOVY-8056:
--------------------------------------

             Summary: GroovyCodeSource(URL) can leak a file handler
                 Key: GROOVY-8056
                 URL: https://issues.apache.org/jira/browse/GROOVY-8056
             Project: Groovy
          Issue Type: Bug
    Affects Versions: 2.4.8
            Reporter: Andy Wilkinson


When {{GroovyCodeSource}} is created from a {{URL}} it calls 
{{url.openConnection.getContentEncoding()}}. When it's a {{file:}} URL, this 
causes a {{FileInputStream}} to be opened and never closed. The stack trace for 
it being opened is:

{noformat}
at java.io.FileInputStream.<init>(Unknown Source)
        at java.io.FileInputStream.<init>(Unknown Source)
        at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
        at 
sun.net.www.protocol.file.FileURLConnection.initializeHeaders(Unknown Source)
        at sun.net.www.protocol.file.FileURLConnection.getHeaderField(Unknown 
Source)
        at java.net.URLConnection.getContentEncoding(Unknown Source)
        at groovy.lang.GroovyCodeSource.<init>(GroovyCodeSource.java:176)
        at 
groovy.text.markup.MarkupTemplateEngine$MarkupTemplateMaker.<init>(MarkupTemplateEngine.java:222)
        at 
groovy.text.markup.MarkupTemplateEngine.createTemplateByPath(MarkupTemplateEngine.java:145)
{noformat}

I believe that keeping a local reference to the {{URLConnection}} and then 
calling {{getInputStream().close()}} on it will fix the problem.

For reference [this|https://github.com/spring-projects/spring-boot/issues/7892] 
is the Spring Boot issues where the problem was originally reported.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to