[ 
https://issues.apache.org/jira/browse/LOG4J2-3423?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17501073#comment-17501073
 ] 

Ralph Goers edited comment on LOG4J2-3423 at 3/3/22, 11:15 PM:
---------------------------------------------------------------

Hmm. I thought I tried to avoid using a URLConnection if it is a file. We 
should just be doing File.lastModified().

I see. FileUtils.fileFromUri() probably isn't returning a File object if it is 
inside of a jar. I'm not sure if it can. But I have a suspicion we are not 
properly closing the input streams for ConnectionSource objects when we get a 
new one.  If you get a ConfigurationSource and don't use the data in it you 
have to call getInputStream().close() when done with it.

I guess I need to go through the code and make sure.


was (Author: [email protected]):
Hmm. I thought I tried to avoid using a URLConnection if it is a file. We 
should just be doing File.lastModified().

I see. FileUtils.fileFromUri() probably isn't returning a File object if it is 
inside of a jar. I'm not sure if it can. But I have a suspicion we are not 
properly closing the input streams for ConnectionSource objects when we get a 
new one.  If you get a ConfigurationSource and don't use the data in it you 
have to call getInputStream().close() when done with it.

> JAR file containing Log4j configuration isn't closed
> ----------------------------------------------------
>
>                 Key: LOG4J2-3423
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-3423
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.14.0
>         Environment: Windows
>            Reporter: Radim Tlusty
>            Assignee: Gary D. Gregory
>            Priority: Major
>             Fix For: 2.17.3
>
>
> If the Log4j configuration file is inside of a JAR file, then the JAR file 
> (which is backed by the {{JarURLConnection}} retrieved from 
> {{{}URL.openConnection{}}}) isn't closed.
> This causes problems on Tomcat running on Windows during undeploying of an 
> application, because the opened JAR file can't be deleted.
> The problem was introduced during implementation of LOG4J2-2901 (version 
> 2.14.0), where the {{URL.openStream}} was replaced by {{URL.openConnection}} 
> in the class {{{}org.apache.logging.log4j.core.config.ConfigurationSource{}}}.
> The proposed solution (https://github.com/apache/logging-log4j2/pull/780) is 
> to use the {{URL.openConnection}} only when needed (~ configuration URL has 
> HTTPS protocol), otherwise similar code as in previous versions (<= 2.13.3) 
> would be used.
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to