only initialize otel span processors once

This commit is contained in:
Dinesh Yeduguru 2025-01-14 10:51:42 -08:00
parent f8d8309b0e
commit 51b4ad77e1

View file

@ -30,13 +30,10 @@ from llama_stack.apis.telemetry import (
Trace, Trace,
UnstructuredLogEvent, UnstructuredLogEvent,
) )
from llama_stack.distribution.datatypes import Api from llama_stack.distribution.datatypes import Api
from llama_stack.providers.inline.telemetry.meta_reference.console_span_processor import ( from llama_stack.providers.inline.telemetry.meta_reference.console_span_processor import (
ConsoleSpanProcessor, ConsoleSpanProcessor,
) )
from llama_stack.providers.inline.telemetry.meta_reference.sqlite_span_processor import ( from llama_stack.providers.inline.telemetry.meta_reference.sqlite_span_processor import (
SQLiteSpanProcessor, SQLiteSpanProcessor,
) )
@ -52,6 +49,7 @@ _GLOBAL_STORAGE = {
"up_down_counters": {}, "up_down_counters": {},
} }
_global_lock = threading.Lock() _global_lock = threading.Lock()
_TRACER_PROVIDER = None
def string_to_trace_id(s: str) -> int: def string_to_trace_id(s: str) -> int:
@ -80,8 +78,11 @@ class TelemetryAdapter(TelemetryDatasetMixin, Telemetry):
} }
) )
global _TRACER_PROVIDER
if _TRACER_PROVIDER is None:
provider = TracerProvider(resource=resource) provider = TracerProvider(resource=resource)
trace.set_tracer_provider(provider) trace.set_tracer_provider(provider)
_TRACER_PROVIDER = provider
if TelemetrySink.OTEL in self.config.sinks: if TelemetrySink.OTEL in self.config.sinks:
otlp_exporter = OTLPSpanExporter( otlp_exporter = OTLPSpanExporter(
endpoint=self.config.otel_endpoint, endpoint=self.config.otel_endpoint,