From 9f871f6895d20344eeecf4cee0bbe4e77f575ba9 Mon Sep 17 00:00:00 2001 From: Yucheng He Date: Sat, 5 Sep 2026 06:15:20 -0700 Subject: [PATCH] docs(otel): state why a disabled backend still routes its own span --- litellm/proxy/litellm_pre_call_utils.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/litellm/proxy/litellm_pre_call_utils.py b/litellm/proxy/litellm_pre_call_utils.py index bc76f630769..0ced2294248 100644 --- a/litellm/proxy/litellm_pre_call_utils.py +++ b/litellm/proxy/litellm_pre_call_utils.py @@ -1044,9 +1044,11 @@ def resolve_tenant_otel_destinations( A backend the request disabled dynamically, through the key's ``litellm_disabled_callbacks`` or the ``x-litellm-disable-callbacks`` header in - ``request_headers``, resolves to no destination: dispatch skips that callback, so - the request keeps the operator's exporters for it exactly as it did before - destinations existed. + ``request_headers``, resolves to no destination, so the fan-out never carries the + request tree to that account and the operator's exporter is never suppressed for + it. That leaves the request exactly where it stood before destinations existed: + the OTel V2 logger itself is not on the disable list's class registry, so its own + span still routes to the tenant's credentials the way it did then. """ from litellm.integrations.otel.model.config import is_otel_v2_enabled from litellm.integrations.otel.presets.destinations import destination_for