Repository: camel Updated Branches: refs/heads/camel-2.18.x 94ff981fd -> 32ac90819 refs/heads/camel-2.19.x ccdfa1a02 -> 221e0f25f refs/heads/master ee33f61eb -> d2d562f47
CAMEL-11287: MDC routeId value is lost after calling a direct route from a transacted route Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6b7193a3 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6b7193a3 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6b7193a3 Branch: refs/heads/master Commit: 6b7193a343abcf0b00b4f8eea109d0c834989d74 Parents: ee33f61 Author: Claus Ibsen <davscl...@apache.org> Authored: Tue May 16 16:46:36 2017 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Tue May 16 16:46:36 2017 +0200 ---------------------------------------------------------------------- .../java/org/apache/camel/impl/MDCUnitOfWork.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/6b7193a3/camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java b/camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java index 1726b80..f0f834a 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java +++ b/camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java @@ -94,14 +94,25 @@ public class MDCUnitOfWork extends DefaultUnitOfWork { @Override public void pushRouteContext(RouteContext routeContext) { - MDC.put(MDC_ROUTE_ID, routeContext.getRoute().getId()); super.pushRouteContext(routeContext); + MDC.put(MDC_ROUTE_ID, routeContext.getRoute().getId()); } @Override public RouteContext popRouteContext() { - MDC.remove(MDC_ROUTE_ID); - return super.popRouteContext(); + RouteContext answer = super.popRouteContext(); + + // restore old route id back again after we have popped + RouteContext previous = getRouteContext(); + if (previous != null) { + // restore old route id back again + MDC.put(MDC_ROUTE_ID, previous.getRoute().getId()); + } else { + // not running in route, so clear (should ideally not happen) + MDC.remove(MDC_ROUTE_ID); + } + + return answer; } @Override