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

Ralph Goers commented on LOG4J2-169:
------------------------------------

Making the change as you propose has the side effect of causing the 
initialization to occur when the ConfigurationFactory class is first referenced 
instead of when an instance of the ConfigurationFactory is required. Doing that 
would cause the createFactories method to try to create instances of the 
ConfigurationFactory class while that class hasn't finished initializing, which 
I don't think is a good idea. 
                
> LogManager.getLogger doesn't work
> ---------------------------------
>
>                 Key: LOG4J2-169
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-169
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0-beta4
>            Reporter: Jed Wesley-Smith
>            Priority: Critical
>              Labels: thread-safety
>
> We randomly get the following:
> java.util.ConcurrentModificationException
>       at 
> org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:377)
>       at 
> org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:361)
>       at 
> org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:266)
>       at 
> org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:134)
>       at 
> org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:75)
>       at 
> org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:30)
>       at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:165)
>       at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:174)
>       at …
> factories is defined as:
>     private static List<ConfigurationFactory> factories = new 
> ArrayList<ConfigurationFactory>();
> The simple fix is to use a java.util.concurrent.CopyOnWriteArrayList:
>     private static final List<ConfigurationFactory> factories = new 
> CopyOnWriteArrayList<ConfigurationFactory>();
> https://svn.apache.org/repos/asf/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to