[ https://issues.apache.org/jira/browse/CAMEL-4246?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen updated CAMEL-4246: ------------------------------- Fix Version/s: 2.8.1 > TraceInterceptor does not work correctly for AsyncProcessing > ------------------------------------------------------------ > > Key: CAMEL-4246 > URL: https://issues.apache.org/jira/browse/CAMEL-4246 > Project: Camel > Issue Type: Bug > Components: camel-core > Affects Versions: 2.7.1 > Reporter: Yaytay > Assignee: Claus Ibsen > Priority: Minor > Fix For: 2.8.1, 2.9.0 > > > TraceEventHandlers are not called correctly when a node is processed > asynchronously. > From org.apache.camel.processor.interceptor.TraceInterceptor: > try { > // special for interceptor where we need to keep booking how > far we have routed in the intercepted processors > if (node.getParent() instanceof InterceptDefinition && > exchange.getUnitOfWork() != null) { > TracedRouteNodes traced = > exchange.getUnitOfWork().getTracedRouteNodes(); > traceIntercept((InterceptDefinition) node.getParent(), > traced, exchange); > } > // process the exchange > try { > sync = super.process(exchange, callback); > } catch (Throwable e) { > exchange.setException(e); > } > } finally { > // after (trace out) > if (shouldLog && tracer.isTraceOutExchanges()) { > logExchange(exchange); > traceExchangeOut(exchange, traceState); > } > } > As it is this results in traceExchangeOut being called before the callback, > which is wrong. > The call to super.process needs to wrap the callback to call traceExchangeOut > (and the finally block shouldn't run if the process is asynch). > This isn't a regression, but the change to make more routes asynchronous > makes it more noticeable. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira