Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-8904

Breadcrumb ID changes when using netty4-http as a producer

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Cannot Reproduce
    • Affects Version/s: 2.14.1, 2.15.2
    • Fix Version/s: None
    • Component/s: camel-netty4-http
    • Labels:
      None
    • Estimated Complexity:
      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&amp;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&amp;throwExceptionOnFailure=false&amp;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.

        Attachments

          Activity

            People

            • Assignee:
              davsclaus Claus Ibsen
              Reporter:
              ralfsteppacher Ralf Steppacher
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: