[
https://issues.apache.org/jira/browse/LOG4J2-1990?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16104328#comment-16104328
]
Remko Popma commented on LOG4J2-1990:
-------------------------------------
Gary, you say you don't care, but you have no choice if you don't want to get
slapped with a {{ConcurrentModificationException}}. If you know that your
application has this issue, you can iterate over the system properties in a
try-catch loop.
My argument is that working around application bugs is the responsibility of
the application. If the application wants to log a map that may be modified
elsewhere they should copy it in a try-catch block and log the copy.
Ralph, I don't think this classifies as Log4j2 causing application failure. The
bug could manifest anywhere, it just happened to show up while Log4j2 was
iterating over the map instead of application code doing the iterating.
> 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)