From 9b9f42cd5f2a02455714ed59c4190f1e165d5d70 Mon Sep 17 00:00:00 2001 From: devmanishofficial Date: Mon, 29 Dec 2025 22:02:10 +0530 Subject: [PATCH] fix(go): filter out non-genkit traces from dev ui Signed-off-by: devmanishofficial --- go/core/tracing/tracing.go | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/go/core/tracing/tracing.go b/go/core/tracing/tracing.go index 727625f75a..abfbe3d9e2 100644 --- a/go/core/tracing/tracing.go +++ b/go/core/tracing/tracing.go @@ -134,7 +134,8 @@ func Tracer() trace.Tracer { // such as one that writes to a file. func WriteTelemetryImmediate(client TelemetryClient) { e := newTelemetryServerExporter(client) - TracerProvider().RegisterSpanProcessor(sdktrace.NewSimpleSpanProcessor(e)) + filtered := &filteringExporter{exporter: e} + TracerProvider().RegisterSpanProcessor(sdktrace.NewSimpleSpanProcessor(filtered)) } // WriteTelemetryBatch adds a telemetry server to the global tracer provider. @@ -146,7 +147,8 @@ func WriteTelemetryImmediate(client TelemetryClient) { // and perform other cleanup. func WriteTelemetryBatch(client TelemetryClient) (shutdown func(context.Context) error) { e := newTelemetryServerExporter(client) - TracerProvider().RegisterSpanProcessor(sdktrace.NewBatchSpanProcessor(e)) + filtered := &filteringExporter{exporter: e} + TracerProvider().RegisterSpanProcessor(sdktrace.NewBatchSpanProcessor(filtered)) return TracerProvider().Shutdown } @@ -402,3 +404,33 @@ func SpanPath(ctx context.Context) string { func SpanTraceInfo(ctx context.Context) TraceInfo { return spanMetaKey.FromContext(ctx).TraceInfo } + +type filteringExporter struct { + exporter sdktrace.SpanExporter +} + +func (e *filteringExporter) ExportSpans(ctx context.Context, spans []sdktrace.ReadOnlySpan) error { + var genkitSpans []sdktrace.ReadOnlySpan + for _, span := range spans { + if isGenkitSpan(span) { + genkitSpans = append(genkitSpans, span) + } + } + if len(genkitSpans) == 0 { + return nil + } + return e.exporter.ExportSpans(ctx, genkitSpans) +} + +func (e *filteringExporter) Shutdown(ctx context.Context) error { + return e.exporter.Shutdown(ctx) +} + +func isGenkitSpan(span sdktrace.ReadOnlySpan) bool { + for _, attr := range span.Attributes() { + if strings.HasPrefix(string(attr.Key), "genkit") { + return true + } + } + return false +}