Skip to content

[Feature]: jaeger does not support true DAG traces? #6717

Open
@teddy-hoo

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:

Image

and it displays in graph view:

Image

These are all trees.

Where did I go wrong?

Proposal

No response

Open questions

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions