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());
+ }
}
//