mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-03 02:22:24 +00:00
* refactor: separate OTLP HTTP decoding from trace codec * feat: complete trace ingestion and read paths * fix: encode OTLP protobuf errors in Rust * fix: raise OTLP body limit to 16 MiB * test: cover OTLP auth body parsing boundary * refactor: parse OTLP media type into enum * fix: enforce OTLP body size at HTTP boundary * perf: preserve shared OTLP metadata across ingestion * bench: compare owned and shared trace resource fanout * refactor: extract shared storage and Python conversion caches * refactor: keep shared storage owned by traces * test: keep trace loopback coverage in Rust * test(proxy): adapt trace coverage to injected access context * fix(tracing): satisfy stacked branch lint checks * refactor(tracing): use immutable ingestion payloads * fix(tracing): declare native error encoder export * test(proxy): resolve trace access through dependency * fix(tracing): align merged normalizer types and bridge tests * fix(tracing): address ingestion and diagnostic review findings * fix(proxy): preserve body parsing for partial request scopes * test(proxy): use valid HTTP scopes in request fixtures * test(proxy): complete auth request flow scopes
17 lines
1 KiB
SQL
17 lines
1 KiB
SQL
SELECT o.SpanId AS span_id, o.ParentSpanId AS parent_span_id, o.SpanName AS name,
|
|
o.ObservationType AS type, o.AgentName AS agent, o.StatusCode AS status,
|
|
substringUTF8(o.StatusMessage, 1, 128) AS status_message,
|
|
lengthUTF8(o.StatusMessage) > 128 AS error_truncated,
|
|
toUnixTimestamp64Nano(o.Timestamp) AS start_ns, o.Duration AS duration_ns,
|
|
o.ServiceName AS service, o.InputPreview AS input_preview, o.Model AS model,
|
|
o.InputTokens AS input_tokens, o.OutputTokens AS output_tokens,
|
|
o.LiteLLMRequestId AS litellm_request_id,
|
|
o.TeamId AS team_id, o.ApiKeyHash AS api_key_hash
|
|
FROM otel_traces AS o
|
|
WHERE o.TraceId = {trace_id:String}
|
|
AND (empty({team_ids:Array(String)}) OR o.TeamId IN {team_ids:Array(String)})
|
|
AND ({api_key_hash:String} = '' OR o.ApiKeyHash = {api_key_hash:String})
|
|
AND ({trace_ref:String} = '' OR
|
|
hex(SHA256(concat(o.TeamId, char(0), o.ApiKeyHash, char(0), o.TraceId))) = {trace_ref:String})
|
|
ORDER BY o.Timestamp, o.EngineReceivedMs, o.StatusMessage
|
|
LIMIT 1 BY o.SpanId
|