llama-stack-mirror/llama_stack/distribution
Ben Browning dd57eff47b feat: Propagate W3C trace context headers from clients
This extracts the W3C trace context headers (traceparent and
tracestate) from incoming requests, stuffs them as attributes on the
spans we create, and uses them within the tracing provider
implementation to actually wrap our spans in the proper context.

What this means in practice is that when a client (such as an OpenAI
client) is instrumented to create these traces, we'll continue that
distributed trace within Llama Stack as opposed to creating our own
root span that breaks the distributed trace between client and server.

It's slightly awkward to do this in Llama Stack because our Tracing
API knows nothing about opentelemetry, W3C trace headers, etc - that's
only knowledge the specific provider implementation has. So, that's
why the trace headers get extracted by in the server code but not
actually used until the provider implementation to form the proper
context.

This also centralizes how we were adding the `__root__` and
`__root_span__` attributes, as those two were being added in different
parts of the code instead of from a single place.

Fixes #2097

Signed-off-by: Ben Browning <bbrownin@redhat.com>
2025-05-13 08:36:58 -04:00
..
routers fix: inference providers still using tools with tool_choice="none" (#2048) 2025-05-07 14:34:47 +02:00
server feat: Propagate W3C trace context headers from clients 2025-05-13 08:36:58 -04:00
store feat: implementation for agent/session list and describe (#1606) 2025-05-07 14:49:23 +02:00
ui chore: more mypy fixes (#2029) 2025-05-06 09:52:31 -07:00
utils chore: enable pyupgrade fixes (#1806) 2025-05-01 14:23:50 -07:00
__init__.py API Updates (#73) 2024-09-17 19:51:35 -07:00
access_control.py chore: enable pyupgrade fixes (#1806) 2025-05-01 14:23:50 -07:00
build.py fix: enforce stricter ASCII rules lint rules in Ruff (#2062) 2025-04-30 18:05:27 +02:00
build_conda_env.sh chore: remove straggler references to llama-models (#1345) 2025-03-01 14:26:03 -08:00
build_container.sh feat: include run.yaml in the container image (#2005) 2025-04-24 11:29:53 +02:00
build_venv.sh chore: remove straggler references to llama-models (#1345) 2025-03-01 14:26:03 -08:00
client.py chore: enable pyupgrade fixes (#1806) 2025-05-01 14:23:50 -07:00
common.sh feat(pre-commit): enhance pre-commit hooks with additional checks (#2014) 2025-04-30 11:35:49 -07:00
configure.py chore: more mypy fixes (#2029) 2025-05-06 09:52:31 -07:00
datatypes.py chore(refact)!: simplify config management (#1105) 2025-05-07 09:18:12 -07:00
distribution.py chore: enable pyupgrade fixes (#1806) 2025-05-01 14:23:50 -07:00
inspect.py feat: add health to all providers through providers endpoint (#1418) 2025-04-14 11:59:36 +02:00
library_client.py chore: more mypy fixes (#2029) 2025-05-06 09:52:31 -07:00
providers.py chore: enable pyupgrade fixes (#1806) 2025-05-01 14:23:50 -07:00
request_headers.py chore: more mypy fixes (#2029) 2025-05-06 09:52:31 -07:00
resolver.py chore: enable pyupgrade fixes (#1806) 2025-05-01 14:23:50 -07:00
stack.py chore: enable pyupgrade fixes (#1806) 2025-05-01 14:23:50 -07:00
start_stack.sh docs: Update docs and fix warning in start-stack.sh (#1937) 2025-04-11 16:26:17 -07:00