logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dimitry Declercq (JIRA)" <j...@apache.org>
Subject [jira] [Created] (LOG4J2-416) ConcurrentModificationException when logging maps that are being worked on
Date Thu, 03 Oct 2013 08:50:44 GMT
Dimitry Declercq created LOG4J2-416:

             Summary: ConcurrentModificationException when logging maps that are being worked
                 Key: LOG4J2-416
                 URL: https://issues.apache.org/jira/browse/LOG4J2-416
             Project: Log4j 2
          Issue Type: Bug
          Components: API
    Affects Versions: 2.0-beta9
            Reporter: Dimitry Declercq

We run a multi-thread application which logs Maps, after log.debug(map) we continue to add
items to the map, resulting in a ConcurrentModificationException on the logging side.

thread1 adds 4 items to the map
thread1 logs the map 
thread2 receives map and adds 2 extra items
thread2 logs the map as well (not needed to trigger this issue)

The logging of the map in thread 1 will sometimes fail with a ConcurrentModificationException.
This is solved by logging a copy instead of the working variable, but I think it would be
good if Log4J does this out of the box

Exception in thread "Thread-38" java.util.ConcurrentModificationException
        at java.util.HashMap$HashIterator.nextEntry(HashMap.java:894)
        at java.util.HashMap$EntryIterator.next(HashMap.java:934)
        at java.util.HashMap$EntryIterator.next(HashMap.java:932)
        at org.apache.logging.log4j.message.ParameterizedMessage.recursiveDeepToString(ParameterizedMessage.java:463)
        at org.apache.logging.log4j.message.ParameterizedMessage.deepToString(ParameterizedMessage.java:378)
        at org.apache.logging.log4j.message.ParameterizedMessage.parseArguments(ParameterizedMessage.java:164)
        at org.apache.logging.log4j.message.ParameterizedMessage.<init>(ParameterizedMessage.java:117)
        at org.apache.logging.log4j.message.ParameterizedMessage.<init>(ParameterizedMessage.java:126)
        at org.slf4j.impl.SLF4JLogger.debug(SLF4JLogger.java:145)
        at com.lynx.api.rest.service.PriceResource.getPrice(PriceResource.java:74)
        at com.lynx.api.rest.service.PriceResourceTest$1.run(PriceResourceTest.java:166)
        at java.lang.Thread.run(Thread.java:722)

This message was sent by Atlassian JIRA

To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org

View raw message