You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
To make matters more interesting, note that Jaeger supports storing Zipkin spans that share the same spanID for client and server spans. Jaeger adjusts these spanIDs during query time as seen here:
Allow for jaeger-clients to report that the span it is sending is the final span. This allows us to remove the assumption about monotonically increasing duration.
Add support for span deltas, which might allow for clients to reduce state maintained. (Might be at odds with the previous point)
Enhance Span model to store the lineage of a span (whether it was generated from a Zipkin or Jaeger span), this allows for more robust merging behavior
Summary
Allow clients to export partial spans, to support two use cases:
Details
For the first version of this feature, we shall assume the following
durationis monotonically increasingFor e.g., a client can do the following
time = 1s
Report Span[traceID=1, spanID=2, duration=10s, operationName="someOperation"]time = 2s
Report Span[traceID=1, spanID=2, duration=20s, operationName="someOperation"]time = 3s
Report Span[traceID=1, spanID=2, duration=40s, operationName="someOperation", tags=...]To support this, the backend would need the ability to resolve merge conflicts on spans. For V1, this means simply selecting the longest span.
On Cassandra, the jaeger-collector uses the model spanhash, guaranteeing that all partial spans are stored:
jaeger/plugin/storage/cassandra/spanstore/dbmodel/converter.go
Line 45 in 412baf6
jaeger/model/span.go
Lines 63 to 66 in fcbd210
On ElasticSearch, we use the index api, which performs upserts.
jaeger/plugin/storage/es/spanstore/writer.go
Lines 179 to 182 in e52ecff
To make matters more interesting, note that Jaeger supports storing Zipkin spans that share the same spanID for client and server spans. Jaeger adjusts these spanIDs during query time as seen here:
jaeger/model/adjuster/span_id_deduper.go
Lines 23 to 31 in 412baf6
Another point to note is that
jaeger-collectormakes no guarantee that spans are stored in the order that they are received.Enhancements
For more context on use cases and prior discussion see jaegertracing/jaeger-client-java#231
Similar tickets: