Description
Description
The search result model creates a name for each trace, used by the search results page. The name is set while iterating over each result's spans, when the trace ID equals the span ID1.
This assumption works for native Jaeger libraries. Unfortunately, if you're using Jaeger alongside Zipkin, you'll find this doesn't hold true for some Zipkin implementations, where these can differ.2
When an incoming request has no trace information attached, we generate a random trace ID and span ID. The span ID can be reused as the lower 64-bits of the trace ID, but it can also be completely different.
Most of our services using Zipkin are fronted by a service that generates (64-bit) trace IDs that match root span IDs, but there's a small handful that aren't. As a result our scatterplot occasionally shrugs a bit.
¯\_(ツ)_/¯
Steps to reproduce the issue:
- Submit spans to a jaeger collector where the root span is started in a Zipkin implementation that generates separate random numbers for a root trace id and span id (eg, opentracing-zipkin-go) or generates 128-bit trace IDs.
- Search for the trace in jaeger-ui.
- Hover over a point of the scatterplot.
Describe the results you received:
¯\_(ツ)_/¯
Describe the results you expected:
A trace name made up of the root's service and operation names.
Additional information you deem important (e.g. issue happens only occasionally):
Based on my grok of the code, the traces returned in the search results are tree sorted, just like on timeline pages. Thus the first row is either the actual root, or a reasonable alternative.
If this is acceptable, I'm happy to submit a pull request changing the implementation.
¯\_(ツ)_/¯