pmk75 opened a new issue, #3551:
URL: https://github.com/apache/logging-log4j2/issues/3551

   ## Description
   
   LoggerContext.updateLoggers throws a ConcurrentModificationException 
randomly when called by javamelody filter initialisation during tomcat startup. 
Result is that tomcat is incorrectly started, process is there but does not 
serve any request
   
   ## Configuration
   
   **Version:** 2.24.2 
   
   **Operating system:** Ubuntu 24.04
   
   **JDK:** amazon-corretto-17.0.10.8.1-linux-x64
   
   ## Logs
   
   ```java
   19-Mar-2025 05:35:40.941 SEVERE [main] 
org.apache.catalina.core.StandardContext.filterStart Exception starting filter 
[javamelody]
        java.util.ConcurrentModificationException
                at 
java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1784)
                at 
java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
                at 
java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
                at 
java.base/java.util.WeakHashMap$ValueSpliterator.forEachRemaining(WeakHashMap.java:1217)
                at 
java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
                at 
java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
                at 
java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
                at 
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
                at 
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
                at 
java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
                at 
org.apache.logging.log4j.core.LoggerContext.updateLoggers(LoggerContext.java:776)
                at 
org.apache.logging.log4j.core.LoggerContext.updateLoggers(LoggerContext.java:766)
                at 
net.bull.javamelody.Log4J2Appender.register(Log4J2Appender.java:86)
                at 
net.bull.javamelody.FilterContext.initLogs(FilterContext.java:333)
                at 
net.bull.javamelody.FilterContext.<init>(FilterContext.java:98)
                at 
net.bull.javamelody.MonitoringFilter.init(MonitoringFilter.java:148)
                at 
org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:244)
   ```
   
   ## Reproduction
   
   Randomly appears at startup (every 5 to 10 starts)
   
   ## Discussion 
   
   The related javamelody code is here 
   
   
https://github.com/javamelody/javamelody/blob/6bb2b275b7dc77cded89ac661352094e10449e16/javamelody-core/src/main/java/net/bull/javamelody/Log4J2Appender.java#L86
   
   And the exception is thrown here 
   
   
https://github.com/apache/logging-log4j2/blob/3ffaf76fbd893055d8b60e0d1c319676aa58437e/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java#L812
 
   
   May be it would be safer to wrap the  loggerRegistry.getLoggers() 
collection, in a separate one such as 
   ```
   new ArrayList<>(loggerRegistry.getLoggers()).forEach(....
   ``` 
   to avoid potential concurrent modification.
   Not really sure of the cause and therefore the potential solution.
   
   Did anybody else noticed this issue ?
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@logging.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to