killbill-aplcache

logging: fix some MDC context wiring Signed-off-by: Pierre-Alexandre

2/19/2019 10:31:42 AM

Details

diff --git a/payment/src/main/java/org/killbill/billing/payment/dispatcher/CallableWithRequestData.java b/payment/src/main/java/org/killbill/billing/payment/dispatcher/CallableWithRequestData.java
index 258c365..2890c6a 100644
--- a/payment/src/main/java/org/killbill/billing/payment/dispatcher/CallableWithRequestData.java
+++ b/payment/src/main/java/org/killbill/billing/payment/dispatcher/CallableWithRequestData.java
@@ -72,7 +72,8 @@ public class CallableWithRequestData<T> implements Callable<T> {
             UUIDs.setRandom(null);
             ThreadContext.unbindSecurityManager();
             ThreadContext.unbindSubject();
-            MDC.clear();
+            // Reset the MDC as before the call, in case the plugin fiddle'd with it
+            MDC.setContextMap(mdcContextMap);
         }
     }
 }
diff --git a/util/src/main/java/org/killbill/billing/util/callcontext/InternalCallContextFactory.java b/util/src/main/java/org/killbill/billing/util/callcontext/InternalCallContextFactory.java
index c4f9a6f..9f05c3a 100644
--- a/util/src/main/java/org/killbill/billing/util/callcontext/InternalCallContextFactory.java
+++ b/util/src/main/java/org/killbill/billing/util/callcontext/InternalCallContextFactory.java
@@ -333,7 +333,10 @@ public class InternalCallContextFactory {
             MDC.put(MDC_KB_ACCOUNT_RECORD_ID, String.valueOf(accountRecordId));
         }
         MDC.put(MDC_KB_TENANT_RECORD_ID, String.valueOf(tenantRecordId));
-        MDC.put(MDC_KB_USER_TOKEN, userToken != null ? userToken.toString() : null);
+        // Make sure that if there is already a userToken in the MDC context, don't overwrite it
+        if (userToken != null) {
+            MDC.put(MDC_KB_USER_TOKEN, userToken.toString());
+        }
     }
 
     //