[
https://issues.apache.org/jira/browse/LOG4J2-1990?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16104086#comment-16104086
]
Remko Popma commented on LOG4J2-1990:
-------------------------------------
Sorry I'm late with this feedback, but why is catching the
ConcurrentModificationException a good idea?
Before this change, if an application had a concurrency bug they would find out
by this exception occurring in their application. Now Log4j2 hides the problem.
If status logging is disabled it is hidden completely, if it is enabled users
will only be able to find out if they monitor the console.
We agreed that this problem was caused by a bug in the application. Log4j2
should not try to hide such bugs just because they happen to manifest while
Log4j2 is doing work.
> ConcurrentModificationException logging a parameter of type Map
> ----------------------------------------------------------------
>
> Key: LOG4J2-1990
> URL: https://issues.apache.org/jira/browse/LOG4J2-1990
> Project: Log4j 2
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.8.2
> Reporter: Philippe Mouawad
> Fix For: 2.9
>
> Attachments: LOG4J2-1990.patch
>
>
> Hello,
> Working with current JMeter trunk and:
> * attached test plan
> * org.apache.jmeter.protocol.http.control.CacheManager level set to debug in
> log4j2.xml in bin folder
> I get:
> {code:none}
> java.util.concurrent.ExecutionException:
> java.util.ConcurrentModificationException
> at java.util.concurrent.FutureTask.report(FutureTask.java:122)
> ~[?:1.8.0_121]
> at java.util.concurrent.FutureTask.get(FutureTask.java:192)
> ~[?:1.8.0_121]
> at
> org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.downloadPageResources(HTTPSamplerBase.java:1349)
> [ApacheJMeter_http.jar:3.3-SNAPSHOT.20170724]
> at
> org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.resultProcessing(HTTPSamplerBase.java:1657)
> [ApacheJMeter_http.jar:3.3-SNAPSHOT.20170724]
> at
> org.apache.jmeter.protocol.http.sampler.HTTPAbstractImpl.resultProcessing(HTTPAbstractImpl.java:519)
> [ApacheJMeter_http.jar:3.3-SNAPSHOT.20170724]
> at
> org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:534)
> [ApacheJMeter_http.jar:3.3-SNAPSHOT.20170724]
> at
> org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)
> [ApacheJMeter_http.jar:3.3-SNAPSHOT.20170724]
> at
> org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1189)
> [ApacheJMeter_http.jar:3.3-SNAPSHOT.20170724]
> at
> org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1178)
> [ApacheJMeter_http.jar:3.3-SNAPSHOT.20170724]
> at
> org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:500)
> [ApacheJMeter_core.jar:3.3-SNAPSHOT.20170724]
> at
> org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:425)
> [ApacheJMeter_core.jar:3.3-SNAPSHOT.20170724]
> at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:254)
> [ApacheJMeter_core.jar:3.3-SNAPSHOT.20170724]
> at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]
> Caused by: java.util.ConcurrentModificationException
> at
> org.apache.commons.collections.map.AbstractLinkedMap$LinkIterator.nextEntry(AbstractLinkedMap.java:560)
> ~[commons-collections-3.2.2.jar:3.2.2]
> at
> org.apache.commons.collections.map.AbstractLinkedMap$EntrySetIterator.next(AbstractLinkedMap.java:428)
> ~[commons-collections-3.2.2.jar:3.2.2]
> at
> org.apache.logging.log4j.message.ParameterFormatter.appendMap(ParameterFormatter.java:569)
> ~[log4j-api-2.8.2.jar:2.8.2]
> at
> org.apache.logging.log4j.message.ParameterFormatter.appendPotentiallyRecursiveValue(ParameterFormatter.java:505)
> ~[log4j-api-2.8.2.jar:2.8.2]
> at
> org.apache.logging.log4j.message.ParameterFormatter.recursiveDeepToString(ParameterFormatter.java:432)
> ~[log4j-api-2.8.2.jar:2.8.2]
> at
> org.apache.logging.log4j.message.ParameterFormatter.formatMessage2(ParameterFormatter.java:189)
> ~[log4j-api-2.8.2.jar:2.8.2]
> at
> org.apache.logging.log4j.message.ReusableParameterizedMessage.formatTo(ReusableParameterizedMessage.java:313)
> ~[log4j-api-2.8.2.jar:2.8.2]
> at
> org.apache.logging.log4j.core.impl.MutableLogEvent.setMessage(MutableLogEvent.java:214)
> ~[log4j-core-2.8.2.jar:2.8.2]
> at
> org.apache.logging.log4j.core.impl.ReusableLogEventFactory.createEvent(ReusableLogEventFactory.java:81)
> ~[log4j-core-2.8.2.jar:2.8.2]
> at
> org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:401)
> [log4j-core-2.8.2.jar:2.8.2]
> at
> org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63)
> [log4j-core-2.8.2.jar:2.8.2]
> at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146)
> [log4j-core-2.8.2.jar:2.8.2]
> at
> org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2091)
> [log4j-api-2.8.2.jar:2.8.2]
> at
> org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2005)
> [log4j-api-2.8.2.jar:2.8.2]
> at
> org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1876)
> [log4j-api-2.8.2.jar:2.8.2]
> at org.apache.logging.slf4j.Log4jLogger.debug(Log4jLogger.java:124)
> [log4j-slf4j-impl-2.8.2.jar:2.8.2]
> at
> org.apache.jmeter.protocol.http.control.CacheManager.getEntry(CacheManager.java:501)
> ~[ApacheJMeter_http.jar:3.3-SNAPSHOT.20170724]
> at
> org.apache.jmeter.protocol.http.control.CacheManager.inCache(CacheManager.java:431)
> ~[ApacheJMeter_http.jar:3.3-SNAPSHOT.20170724]
> at
> org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:443)
> ~[ApacheJMeter_http.jar:3.3-SNAPSHOT.20170724]
> at
> org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)
> ~[ApacheJMeter_http.jar:3.3-SNAPSHOT.20170724]
> at
> org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase$ASyncSample.call(HTTPSamplerBase.java:2031)
> ~[ApacheJMeter_http.jar:3.3-SNAPSHOT.20170724]
> at
> org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase$ASyncSample.call(HTTPSamplerBase.java:1)
> ~[ApacheJMeter_http.jar:3.3-SNAPSHOT.20170724]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> ~[?:1.8.0_121]
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> ~[?:1.8.0_121]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> ~[?:1.8.0_121]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> ~[?:1.8.0_121]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> ~[?:1.8.0_121]
> ... 1 more
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)