[logback-dev] [JIRA] Created: (LBCLASSIC-253) MDC.clear() in child thread improperly affects parent.

Thomas Becker (JIRA) noreply-jira at qos.ch
Tue Mar 1 16:27:51 CET 2011


MDC.clear() in child thread improperly affects parent.
------------------------------------------------------

                 Key: LBCLASSIC-253
                 URL: http://jira.qos.ch/browse/LBCLASSIC-253
             Project: logback-classic
          Issue Type: Bug
          Components: Other
    Affects Versions: 0.9.28
         Environment: JDK 1.6.0_21
            Reporter: Thomas Becker
            Assignee: Logback dev list


I want to upgrade logback to 0.9.28 but one of my unit tests caught this bug in the LogbackMDCAdapter.  Basically, if a child thread clears the MDC, the parent thread's copy is cleared as well.  This simple unit test illustrates the problem.

import org.junit.Test;
import org.slf4j.MDC;

/**
 * Demonstrates a bug in LogbackMDCAdapter.  The clear() executed by the child thread should not affect the parent.
 */
public class MDCTest {

    @Test
    public void testBug() throws InterruptedException {
        MDC.put("foo", "bar");
        assertEquals("bar", MDC.get("foo"));
        
        Thread clearer = new Thread() {
            @Override
            public void run() {
                MDC.clear();
                assertNull(MDC.get("foo"));
            }
        };

        clearer.start();
        clearer.join();
        //Fails
        assertEquals("bar", MDC.get("foo"));
    }
}

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the logback-dev mailing list