Hey all,I've been doing some experimenting with tracing Camel apps (that happen to be running in an Istio-ified OpenShift but that's not important).
My app consists of some camel routes exposed with REST that call out to other RESTful services to form an aggregate response to send back to the caller, using the splitter and enricher patterns (and AggregationStrategy POJOs) to do so.
What I found was that the OpenTracing X-b3-* HTTP headers aren't preserved across these calls, so the tracing gets screwed up and spans aren't associated with the proper traces. They are somehow being stripped, somewhere.
For example, here are the two uses of split/enrich from my app. Using the logger I determined that headers weren't being preserved. The workaround I found was that,
in the AggregationStrategy POJOs if I do this: original.getOut().setHeaders(original.getIn().getHeaders());Before returning the original exchange, then things work. Basically I am manually ensuring that the headers, if stripped, are added back. Is this a bug in camel? Is this workaround good?
-James  https://github.com/openzipkin/b3-propagation https://github.com/jbossdemocentral/coolstore-microservice/blob/1.2.x/coolstore-gw/src/main/java/com/redhat/coolstore/api_gateway/ProductGateway.java#L100-L101  https://github.com/jbossdemocentral/coolstore-microservice/blob/1.2.x/coolstore-gw/src/main/java/com/redhat/coolstore/api_gateway/ProductGateway.java#L169-L196