Open
Description
Requirement
In the Jaeger documentation, it states, "Represent traces as directed acyclic graphs (not just trees) via span references." However, the current Jaeger UI can only display traces in a tree structure and does not support visualizing a true DAG trace.
Problem
For example, I have a trace like:
{
"data": [
{
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spans": [
{
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "a5b574d08bca00c0",
"operationName": "feature2",
"references": [
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "88ffee2989133ea1"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "6e1b23d12d65a3bf53dd7b10a83dabaa",
"spanID": "d0d6fbff18237888"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "e648daae6d3cdbe47237963c24a6b00e",
"spanID": "f2aaa72766ebdca4"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "f7ff21d33cb7e845e3f2f050f34bd37c",
"spanID": "6e772b33f51bafba"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "beb4ee3c5a9c137c1093c20c622970dd",
"spanID": "26ce26708f2ebc56"
}
],
"startTime": 1739348940603499,
"duration": 10061,
"tags": [
{
"key": "otel.scope.name",
"type": "string",
"value": "foo_library"
},
{
"key": "otel.scope.version",
"type": "string",
"value": "1.19.0"
},
{
"key": "span.kind",
"type": "string",
"value": "consumer"
}
],
"logs": [],
"processID": "p1",
"warnings": null
},
{
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "b2025ed474794c8a",
"operationName": "feature3",
"references": [
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "88ffee2989133ea1"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "6e1b23d12d65a3bf53dd7b10a83dabaa",
"spanID": "d0d6fbff18237888"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "e648daae6d3cdbe47237963c24a6b00e",
"spanID": "f2aaa72766ebdca4"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "f7ff21d33cb7e845e3f2f050f34bd37c",
"spanID": "6e772b33f51bafba"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "beb4ee3c5a9c137c1093c20c622970dd",
"spanID": "26ce26708f2ebc56"
}
],
"startTime": 1739348940603519,
"duration": 10064,
"tags": [
{
"key": "otel.scope.name",
"type": "string",
"value": "foo_library"
},
{
"key": "otel.scope.version",
"type": "string",
"value": "1.19.0"
},
{
"key": "span.kind",
"type": "string",
"value": "consumer"
}
],
"logs": [],
"processID": "p1",
"warnings": null
},
{
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "1ff0dd5331306150",
"operationName": "features5",
"references": [
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "88ffee2989133ea1"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "6e1b23d12d65a3bf53dd7b10a83dabaa",
"spanID": "d0d6fbff18237888"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "e648daae6d3cdbe47237963c24a6b00e",
"spanID": "f2aaa72766ebdca4"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "f7ff21d33cb7e845e3f2f050f34bd37c",
"spanID": "6e772b33f51bafba"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "beb4ee3c5a9c137c1093c20c622970dd",
"spanID": "26ce26708f2ebc56"
}
],
"startTime": 1739348940603569,
"duration": 10062,
"tags": [
{
"key": "otel.scope.name",
"type": "string",
"value": "foo_library"
},
{
"key": "otel.scope.version",
"type": "string",
"value": "1.19.0"
},
{
"key": "span.kind",
"type": "string",
"value": "consumer"
}
],
"logs": [],
"processID": "p1",
"warnings": null
},
{
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "3136a60466751258",
"operationName": "signal1",
"references": [
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "b2025ed474794c8a"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "409bed55f3b450b2"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "a5b574d08bca00c0"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "68ea094a0f26656b"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "1ff0dd5331306150"
}
],
"startTime": 1739348940618685,
"duration": 10061,
"tags": [
{
"key": "otel.scope.name",
"type": "string",
"value": "foo_library"
},
{
"key": "otel.scope.version",
"type": "string",
"value": "1.19.0"
},
{
"key": "span.kind",
"type": "string",
"value": "consumer"
}
],
"logs": [],
"processID": "p1",
"warnings": [
"clock skew adjustment disabled; not applying calculated delta of -15.164837ms"
]
},
{
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "e908ec65dddc30a5",
"operationName": "signal2",
"references": [
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "b2025ed474794c8a"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "409bed55f3b450b2"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "a5b574d08bca00c0"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "68ea094a0f26656b"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "1ff0dd5331306150"
}
],
"startTime": 1739348940618703,
"duration": 10061,
"tags": [
{
"key": "otel.scope.name",
"type": "string",
"value": "foo_library"
},
{
"key": "otel.scope.version",
"type": "string",
"value": "1.19.0"
},
{
"key": "span.kind",
"type": "string",
"value": "consumer"
}
],
"logs": [],
"processID": "p1",
"warnings": [
"clock skew adjustment disabled; not applying calculated delta of -15.183033ms"
]
},
{
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "f34e91387b378e6a",
"operationName": "signal3",
"references": [
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "b2025ed474794c8a"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "409bed55f3b450b2"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "a5b574d08bca00c0"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "68ea094a0f26656b"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "1ff0dd5331306150"
}
],
"startTime": 1739348940618717,
"duration": 10060,
"tags": [
{
"key": "otel.scope.name",
"type": "string",
"value": "foo_library"
},
{
"key": "otel.scope.version",
"type": "string",
"value": "1.19.0"
},
{
"key": "span.kind",
"type": "string",
"value": "consumer"
}
],
"logs": [],
"processID": "p1",
"warnings": [
"clock skew adjustment disabled; not applying calculated delta of -15.196554ms"
]
},
{
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "2cd5ecb20b2a2045",
"operationName": "signal4",
"references": [
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "b2025ed474794c8a"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "409bed55f3b450b2"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "a5b574d08bca00c0"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "68ea094a0f26656b"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "1ff0dd5331306150"
}
],
"startTime": 1739348940618733,
"duration": 10059,
"tags": [
{
"key": "otel.scope.name",
"type": "string",
"value": "foo_library"
},
{
"key": "otel.scope.version",
"type": "string",
"value": "1.19.0"
},
{
"key": "span.kind",
"type": "string",
"value": "consumer"
}
],
"logs": [],
"processID": "p1",
"warnings": [
"clock skew adjustment disabled; not applying calculated delta of -15.211867ms"
]
},
{
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "88ffee2989133ea1",
"operationName": "tick3",
"references": [],
"startTime": 1739348940585137,
"duration": 10060,
"tags": [
{
"key": "otel.scope.name",
"type": "string",
"value": "foo_library"
},
{
"key": "otel.scope.version",
"type": "string",
"value": "1.19.0"
},
{
"key": "span.kind",
"type": "string",
"value": "producer"
}
],
"logs": [],
"processID": "p1",
"warnings": null
},
{
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "72f6a147a005d6d4",
"operationName": "signal5",
"references": [
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "b2025ed474794c8a"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "409bed55f3b450b2"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "a5b574d08bca00c0"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "68ea094a0f26656b"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "1ff0dd5331306150"
}
],
"startTime": 1739348940618773,
"duration": 10061,
"tags": [
{
"key": "otel.scope.name",
"type": "string",
"value": "foo_library"
},
{
"key": "otel.scope.version",
"type": "string",
"value": "1.19.0"
},
{
"key": "span.kind",
"type": "string",
"value": "consumer"
}
],
"logs": [],
"processID": "p1",
"warnings": [
"clock skew adjustment disabled; not applying calculated delta of -15.252623ms"
]
},
{
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "68ea094a0f26656b",
"operationName": "features4",
"references": [
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "88ffee2989133ea1"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "6e1b23d12d65a3bf53dd7b10a83dabaa",
"spanID": "d0d6fbff18237888"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "e648daae6d3cdbe47237963c24a6b00e",
"spanID": "f2aaa72766ebdca4"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "f7ff21d33cb7e845e3f2f050f34bd37c",
"spanID": "6e772b33f51bafba"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "beb4ee3c5a9c137c1093c20c622970dd",
"spanID": "26ce26708f2ebc56"
}
],
"startTime": 1739348940603535,
"duration": 10059,
"tags": [
{
"key": "otel.scope.name",
"type": "string",
"value": "foo_library"
},
{
"key": "otel.scope.version",
"type": "string",
"value": "1.19.0"
},
{
"key": "span.kind",
"type": "string",
"value": "consumer"
}
],
"logs": [],
"processID": "p1",
"warnings": [
"clock skew adjustment disabled; not applying calculated delta of -18.398507ms"
]
},
{
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "409bed55f3b450b2",
"operationName": "feature1",
"references": [
{
"refType": "FOLLOWS_FROM",
"traceID": "7cd8d419d3fedf286056416fae8a4c73",
"spanID": "88ffee2989133ea1"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "6e1b23d12d65a3bf53dd7b10a83dabaa",
"spanID": "d0d6fbff18237888"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "e648daae6d3cdbe47237963c24a6b00e",
"spanID": "f2aaa72766ebdca4"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "f7ff21d33cb7e845e3f2f050f34bd37c",
"spanID": "6e772b33f51bafba"
},
{
"refType": "FOLLOWS_FROM",
"traceID": "beb4ee3c5a9c137c1093c20c622970dd",
"spanID": "26ce26708f2ebc56"
}
],
"startTime": 1739348940603490,
"duration": 10064,
"tags": [
{
"key": "otel.scope.name",
"type": "string",
"value": "foo_library"
},
{
"key": "otel.scope.version",
"type": "string",
"value": "1.19.0"
},
{
"key": "span.kind",
"type": "string",
"value": "consumer"
}
],
"logs": [],
"processID": "p1",
"warnings": null
}
],
"processes": {
"p1": {
"serviceName": "goliath",
"tags": [
{
"key": "telemetry.sdk.language",
"type": "string",
"value": "cpp"
},
{
"key": "telemetry.sdk.name",
"type": "string",
"value": "opentelemetry"
},
{
"key": "telemetry.sdk.version",
"type": "string",
"value": "1.19.0"
}
]
}
},
"warnings": null
}
],
"total": 0,
"limit": 0,
"offset": 0,
"errors": null
}
It displays in timeline view:
and it displays in graph view:
These are all trees.
Where did I go wrong?
Proposal
No response
Open questions
No response
Activity