Author: kwall
Date: Fri Jul 10 23:25:52 2015
New Revision: 1690320

URL: http://svn.apache.org/r1690320
Log:
QPID-6613: [Java Broker] Ensure the log event thread name are faithfully 
retained for events originating from spawned brokers during tests

* Workaround for suspected logback defect LOGBACK-1088
* Avoid making assumptions about the mutability of the MDC context returned 
from ILoggingEvent#getMDCPropertyMap

Modified:
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerLogbackSocketLoggerImpl.java

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerLogbackSocketLoggerImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerLogbackSocketLoggerImpl.java?rev=1690320&r1=1690319&r2=1690320&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerLogbackSocketLoggerImpl.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerLogbackSocketLoggerImpl.java
 Fri Jul 10 23:25:52 2015
@@ -21,14 +21,18 @@
 
 package org.apache.qpid.server.logging;
 
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
 
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.net.SocketAppender;
 import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.classic.spi.LoggingEventVO;
 import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.util.Duration;
+import org.slf4j.MDC;
 
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.ManagedAttributeField;
@@ -96,8 +100,26 @@ public class BrokerLogbackSocketLoggerIm
                                             @Override
                                             protected void append(final 
ILoggingEvent event)
                                             {
-                                                augmentWithMDC(event);
-                                                super.append(event);
+                                                Set<String> keys = new 
HashSet<>();
+                                                try
+                                                {
+                                                    for (Map.Entry<String, 
String> entry : _mappedDiagnosticContext.entrySet())
+                                                    {
+                                                        
MDC.put(entry.getKey(), entry.getValue());
+                                                        
keys.add(entry.getKey());
+                                                    }
+
+                                                    // Workaround for 
suspected Logback defect LOGBACK-1088
+                                                    
event.prepareForDeferredProcessing();
+                                                    super.append(event);
+                                                }
+                                                finally
+                                                {
+                                                    for (String key : keys)
+                                                    {
+                                                        MDC.remove(key);
+                                                    }
+                                                }
                                             }
                                         };
         socketAppender.setPort(_port);
@@ -107,10 +129,4 @@ public class BrokerLogbackSocketLoggerIm
         return socketAppender;
 
     }
-
-    private void augmentWithMDC(final ILoggingEvent event)
-    {
-        event.getMDCPropertyMap().putAll(_mappedDiagnosticContext);
-    }
-
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to