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

Gary Gregory commented on LOG4J2-169:
-------------------------------------

Using a CopyOnWriteArrayList seems like a brute force solution would generate a 
lot of garbage when many loggers are added. My server at work uses 100's of 
loggers.

The alternative would be to synchronize in just the right places, which is 
harder to get right. 

Ralph, any thoughts? 


                
> 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