Non-immediate and Non-causal Links between Spans #826
Labels
area:semantic-conventions
Related to semantic conventions
area:span-relationships
Related to span relationships
release:after-ga
Not required before GA release, and not going to work on before GA
spec:trace
Related to the specification/trace directory
What are you trying to achieve?
The current specification (references in additional context) only models relationships between Spans at a very basic level of parent and an arbitrary link (possibly with attributes). Systems can exhibit various kinds of links, such as "child of"/"follows from" or "immediate"/"non-immediate" which are known to the system but can not currently be expressed. This issue focuses on the latter distinction but opens up the wider area of defining the semantics of types of relationships/links that can exist and how they can be handled by downstream systems.
Consider the following use-cases where a relationship exists between Spans, however, the relationship is not "causal" (i.e. the previous span didn't directly cause the second span) and it may express a non-immediate linkage between them.
Publish()
somehow Links to the originalSubscribe()
spanAlthough it is arguable whether this is a "Link" as it's not causal, it can add considerable value to the observability of a system and as such I'd like to prompt some consideration of whether the semantics of such a relationship should be supported.
This distinction between (non-)immediate/(non-)causal will likely have little impact at instrumentation time but may be very necessary for downstream handling of a tracing system. For example, It's unlikely that I'd ever look at a timeline/Gantt-chart for a non-immediate/non-causal chart. However I might want to easily navigate through all traces in a subscription, or likewise to see all consumption of a record/cached value.
Given the need to handle such relationships differently upon consumption, and given that this context is known at instrumentation time, it would be desirable to capture it, ideally by having well-defined link semantics that can be expressed when adding the Link.
Additional context.
The current specification allows Spans to both reference a parent as well as have additional links. As described in
A related issue exists #65 which focuses on the child/follows relationship, but I think many of the same considerations would apply here as well.
I don't have a concrete suggestions for how to solve this, but I believe that some form of "link type" definition is necessary. This could consist of something like the following traits:
The above traits may also be somewhat related, i.e. I don't see how a parent or child concept would exist unless the link is causal.
The text was updated successfully, but these errors were encountered: