[ 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