Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Cannot Reproduce
-
2.14.1, 2.15.2
-
None
-
None
-
Unknown
Description
When using the netty4-http component as a producer, the response from the remote server is processed in a different thread (... yClientTCPWorker) than the start of the Camel route and thus the breadcrumb ID changes (because the MDC context changes/is lost).
2015-06-25 09:55:40,887 | INFO | entExecutorGroup | pep-xds_b-repository | 70 - org.apache.camel.camel-core - 2.14.1 | ID-ptl9921-45465-1435218175846-9-29 | Call to repository received. -- remote call; the next line is logged after the response was received -- 2015-06-25 09:55:41,155 | INFO | yClientTCPWorker | AuditLogger | 168 - ch.vivates.ams.pep - 3.0.1.SNAPSHOT | ID-ptl9921-45465-1435218175846-9-33 | User id: ... 2015-06-25 09:55:41,171 | INFO | EVENTS.USER.XDS] | route_xds_b-activity | 70 - org.apache.camel.camel-core - 2.14.1 | ID-ptl9921-45465-1435218175846-9-33 | Logging XDS event: ...
In the example above the breadcrumb changes from ID-ptl9921-45465-1435218175846-9-29 to ID-ptl9921-45465-1435218175846-9-33.
If I use http4 as the producer the breadcrumb is the same for all route steps. Presumably because the same thread executes all route steps.
Route that reproduces the issue for me:
<route> <from uri="netty4-http:http://{{pep.host}}:{{pep.xds.b.repository.port}}/XDS3/repository?matchOnUriPrefix=true&disableStreamCache=true" /> <log message="Call to repository received." loggingLevel="INFO" logName="pep-xds_b-repository" /> <process ref="repositoryInboundProcessor" /> <to uri="netty4-http:http://{{xds.b.repository.host}}:{{xds.b.repository.port}}/XDS3/repository?bridgeEndpoint=true&throwExceptionOnFailure=false&disableStreamCache=true" /> <process ref="repositoryOutboundProcessor" /> </route> <onCompletion mode="AfterConsumer" parallelProcessing="false"> <process ref="forkJoinProcessor" /> <bean ref="auditLogger" method="localAuditXDS" /> <bean ref="auditLogger" method="createCommandUserLogXDS" /> <setExchangePattern pattern="InOnly" /> <to uri="activemq:queue:{{activemq.queue.events.user.xds}}" /> </onCompletion>
The repositoryOutboundProcessor and the onCompletion parts log a different breadcrumb (and thread name) than the beginning of the route before the <to uri="netty4-http:http:// ... step.