From c10ea151bc664442606dceeeb2d2d39689465b44 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Mon, 13 Oct 2025 14:35:50 +0200 Subject: [PATCH 1/3] Add Unwrap method on tracer provider wrapper and use it in zpagesextension --- component/componentstatus/go.mod | 2 -- component/go.mod | 2 -- config/configauth/go.mod | 2 -- config/configmiddleware/go.mod | 2 -- connector/go.mod | 2 -- connector/xconnector/go.mod | 2 -- exporter/go.mod | 2 -- exporter/xexporter/go.mod | 2 -- .../extensionauth/extensionauthtest/go.mod | 2 -- extension/extensioncapabilities/go.mod | 2 -- .../extensionmiddlewaretest/go.mod | 2 -- extension/go.mod | 2 -- extension/xextension/go.mod | 2 -- extension/zpagesextension/zpagesextension.go | 15 +++++++++---- internal/memorylimiter/go.mod | 2 -- .../componentattribute/tracer_provider.go | 21 +++---------------- processor/go.mod | 2 -- processor/xprocessor/go.mod | 2 -- receiver/go.mod | 2 -- receiver/xreceiver/go.mod | 2 -- service/hostcapabilities/go.mod | 2 -- 21 files changed, 14 insertions(+), 60 deletions(-) diff --git a/component/componentstatus/go.mod b/component/componentstatus/go.mod index 264796369a2..ab8fce7ef4a 100644 --- a/component/componentstatus/go.mod +++ b/component/componentstatus/go.mod @@ -14,7 +14,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -27,7 +26,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/component/go.mod b/component/go.mod index fc7d698ec09..b692acd73c4 100644 --- a/component/go.mod +++ b/component/go.mod @@ -13,7 +13,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -26,7 +25,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/config/configauth/go.mod b/config/configauth/go.mod index a89b1a99d9a..00a2b3f7ade 100644 --- a/config/configauth/go.mod +++ b/config/configauth/go.mod @@ -16,7 +16,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -30,7 +29,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/config/configmiddleware/go.mod b/config/configmiddleware/go.mod index 0d4fab5b306..8c6c8f9d9b8 100644 --- a/config/configmiddleware/go.mod +++ b/config/configmiddleware/go.mod @@ -16,7 +16,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -30,7 +29,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/connector/go.mod b/connector/go.mod index a79b8fa7b25..25366cbe887 100644 --- a/connector/go.mod +++ b/connector/go.mod @@ -20,7 +20,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -35,7 +34,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/zap v1.27.0 // indirect golang.org/x/net v0.42.0 // indirect diff --git a/connector/xconnector/go.mod b/connector/xconnector/go.mod index 9d2bc5e95d4..948f24c87c0 100644 --- a/connector/xconnector/go.mod +++ b/connector/xconnector/go.mod @@ -21,7 +21,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -35,7 +34,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/exporter/go.mod b/exporter/go.mod index 98c50853219..7341452f1d3 100644 --- a/exporter/go.mod +++ b/exporter/go.mod @@ -23,7 +23,6 @@ require ( github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect @@ -51,7 +50,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect diff --git a/exporter/xexporter/go.mod b/exporter/xexporter/go.mod index 6313d6af4a8..b5123545e83 100644 --- a/exporter/xexporter/go.mod +++ b/exporter/xexporter/go.mod @@ -16,7 +16,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -32,7 +31,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/extension/extensionauth/extensionauthtest/go.mod b/extension/extensionauth/extensionauthtest/go.mod index a13420a533f..ccebe2e61b5 100644 --- a/extension/extensionauth/extensionauthtest/go.mod +++ b/extension/extensionauth/extensionauthtest/go.mod @@ -16,7 +16,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -30,7 +29,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/extension/extensioncapabilities/go.mod b/extension/extensioncapabilities/go.mod index d038511de0d..d8b92cd66e7 100644 --- a/extension/extensioncapabilities/go.mod +++ b/extension/extensioncapabilities/go.mod @@ -14,7 +14,6 @@ require ( github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect @@ -32,7 +31,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/extension/extensionmiddleware/extensionmiddlewaretest/go.mod b/extension/extensionmiddleware/extensionmiddlewaretest/go.mod index a6c2ec81c9b..0b23da486ed 100644 --- a/extension/extensionmiddleware/extensionmiddlewaretest/go.mod +++ b/extension/extensionmiddleware/extensionmiddlewaretest/go.mod @@ -15,7 +15,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -29,7 +28,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/extension/go.mod b/extension/go.mod index bbb784f8cce..90f5e59d0ee 100644 --- a/extension/go.mod +++ b/extension/go.mod @@ -13,7 +13,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -27,7 +26,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/extension/xextension/go.mod b/extension/xextension/go.mod index d8220be3a3d..8e3e207b11c 100644 --- a/extension/xextension/go.mod +++ b/extension/xextension/go.mod @@ -11,7 +11,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -24,7 +23,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/extension/zpagesextension/zpagesextension.go b/extension/zpagesextension/zpagesextension.go index 107ba962ba0..0f5de894f61 100644 --- a/extension/zpagesextension/zpagesextension.go +++ b/extension/zpagesextension/zpagesextension.go @@ -11,7 +11,8 @@ import ( "path" "go.opentelemetry.io/contrib/zpages" - "go.opentelemetry.io/otel/sdk/trace" + traceSdk "go.opentelemetry.io/otel/sdk/trace" + "go.opentelemetry.io/otel/trace" "go.uber.org/zap" "go.opentelemetry.io/collector/component" @@ -39,17 +40,23 @@ type zpagesExtension struct { type registerableTracerProvider interface { // RegisterSpanProcessor adds the given SpanProcessor to the list of SpanProcessors. // https://pkg.go.dev/go.opentelemetry.io/otel/sdk/trace#TracerProvider.RegisterSpanProcessor. - RegisterSpanProcessor(SpanProcessor trace.SpanProcessor) + RegisterSpanProcessor(SpanProcessor traceSdk.SpanProcessor) // UnregisterSpanProcessor removes the given SpanProcessor from the list of SpanProcessors. // https://pkg.go.dev/go.opentelemetry.io/otel/sdk/trace#TracerProvider.UnregisterSpanProcessor. - UnregisterSpanProcessor(SpanProcessor trace.SpanProcessor) + UnregisterSpanProcessor(SpanProcessor traceSdk.SpanProcessor) } func (zpe *zpagesExtension) Start(ctx context.Context, host component.Host) error { zPagesMux := http.NewServeMux() - sdktracer, ok := zpe.telemetry.TracerProvider.(registerableTracerProvider) + tp := zpe.telemetry.TracerProvider + // If the TracerProvider was wrapped by the service implementation, access the underlying SDK provider + if wrapped, ok := tp.(interface{ Unwrap() trace.TracerProvider }); ok { + tp = wrapped.Unwrap() + } + + sdktracer, ok := tp.(registerableTracerProvider) if ok { sdktracer.RegisterSpanProcessor(zpe.zpagesSpanProcessor) zPagesMux.Handle(path.Join("/debug", tracezPath), zpages.NewTracezHandler(zpe.zpagesSpanProcessor)) diff --git a/internal/memorylimiter/go.mod b/internal/memorylimiter/go.mod index 02ff5ce872b..face3ecc1b6 100644 --- a/internal/memorylimiter/go.mod +++ b/internal/memorylimiter/go.mod @@ -20,7 +20,6 @@ require ( github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect @@ -44,7 +43,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect diff --git a/internal/telemetry/componentattribute/tracer_provider.go b/internal/telemetry/componentattribute/tracer_provider.go index b2cb69404bc..5eac1a8bdf1 100644 --- a/internal/telemetry/componentattribute/tracer_provider.go +++ b/internal/telemetry/componentattribute/tracer_provider.go @@ -7,7 +7,6 @@ import ( "slices" "go.opentelemetry.io/otel/attribute" - sdkTrace "go.opentelemetry.io/otel/sdk/trace" "go.opentelemetry.io/otel/trace" ) @@ -16,24 +15,10 @@ type tracerProviderWithAttributes struct { attrs []attribute.KeyValue } -// Necessary for components that use SDK-only methods, such as zpagesextension -type tracerProviderWithAttributesSdk struct { - *sdkTrace.TracerProvider - attrs []attribute.KeyValue -} - // TracerProviderWithAttributes creates a TracerProvider with a new set of injected instrumentation scope attributes. func TracerProviderWithAttributes(tp trace.TracerProvider, attrs attribute.Set) trace.TracerProvider { - switch tpwa := tp.(type) { - case tracerProviderWithAttributesSdk: + if tpwa, ok := tp.(tracerProviderWithAttributes); ok { tp = tpwa.TracerProvider - case tracerProviderWithAttributes: - tp = tpwa.TracerProvider - case *sdkTrace.TracerProvider: - return tracerProviderWithAttributesSdk{ - TracerProvider: tpwa, - attrs: attrs.ToSlice(), - } } return tracerProviderWithAttributes{ TracerProvider: tp, @@ -55,6 +40,6 @@ func (tpwa tracerProviderWithAttributes) Tracer(name string, options ...trace.Tr return tracerWithAttributes(tpwa.TracerProvider, tpwa.attrs, name, options...) } -func (tpwa tracerProviderWithAttributesSdk) Tracer(name string, options ...trace.TracerOption) trace.Tracer { - return tracerWithAttributes(tpwa.TracerProvider, tpwa.attrs, name, options...) +func (tpwa tracerProviderWithAttributes) Unwrap() trace.TracerProvider { + return tpwa.TracerProvider } diff --git a/processor/go.mod b/processor/go.mod index 9a506464a6b..4f311993846 100644 --- a/processor/go.mod +++ b/processor/go.mod @@ -16,7 +16,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -32,7 +31,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/processor/xprocessor/go.mod b/processor/xprocessor/go.mod index 23f9ace5ad0..9c85b9962b9 100644 --- a/processor/xprocessor/go.mod +++ b/processor/xprocessor/go.mod @@ -16,7 +16,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -32,7 +31,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/receiver/go.mod b/receiver/go.mod index f35aebdf7b2..9470b72fde9 100644 --- a/receiver/go.mod +++ b/receiver/go.mod @@ -17,7 +17,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -32,7 +31,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/receiver/xreceiver/go.mod b/receiver/xreceiver/go.mod index 8437bfd8cfe..325b97b06ee 100644 --- a/receiver/xreceiver/go.mod +++ b/receiver/xreceiver/go.mod @@ -16,7 +16,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -32,7 +31,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect diff --git a/service/hostcapabilities/go.mod b/service/hostcapabilities/go.mod index d64ae7fbc63..031e821ea31 100644 --- a/service/hostcapabilities/go.mod +++ b/service/hostcapabilities/go.mod @@ -12,7 +12,6 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -25,7 +24,6 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect From 03b59abaf27faa4b514fb3d972042823a1ec103c Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Tue, 14 Oct 2025 12:02:26 +0200 Subject: [PATCH 2/3] Anticipate multiple wrappers and document Unwrap method --- extension/zpagesextension/zpagesextension.go | 6 +++++- internal/telemetry/telemetry.go | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/extension/zpagesextension/zpagesextension.go b/extension/zpagesextension/zpagesextension.go index 0f5de894f61..a8aec6e3329 100644 --- a/extension/zpagesextension/zpagesextension.go +++ b/extension/zpagesextension/zpagesextension.go @@ -52,7 +52,11 @@ func (zpe *zpagesExtension) Start(ctx context.Context, host component.Host) erro tp := zpe.telemetry.TracerProvider // If the TracerProvider was wrapped by the service implementation, access the underlying SDK provider - if wrapped, ok := tp.(interface{ Unwrap() trace.TracerProvider }); ok { + for { + wrapped, ok := tp.(interface{ Unwrap() trace.TracerProvider }) + if !ok { + break + } tp = wrapped.Unwrap() } diff --git a/internal/telemetry/telemetry.go b/internal/telemetry/telemetry.go index 5ebe2d55dde..7fa0e2f584c 100644 --- a/internal/telemetry/telemetry.go +++ b/internal/telemetry/telemetry.go @@ -31,6 +31,9 @@ type TelemetrySettings struct { Logger *zap.Logger // TracerProvider that the factory can pass to other instrumented third-party libraries. + // + // The service may wrap this provider for attribute injection. The wrapper may implement an + // additional `Unwrap() trace.TracerProvider` method to grant access to the underlying SDK. TracerProvider trace.TracerProvider // MeterProvider that the factory can pass to other instrumented third-party libraries. From c7ee9f29947e4cf05d1196e7d181412fed2bfba5 Mon Sep 17 00:00:00 2001 From: Jade Guiton Date: Tue, 14 Oct 2025 12:05:31 +0200 Subject: [PATCH 3/3] Mention Unwrap method in Factory.CreateTracerProvider documentation --- service/telemetry/telemetry.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/service/telemetry/telemetry.go b/service/telemetry/telemetry.go index 22c9b388ae3..5fe6e13a802 100644 --- a/service/telemetry/telemetry.go +++ b/service/telemetry/telemetry.go @@ -92,6 +92,9 @@ type Factory interface { // CreateTracerProvider creates a trace.TracerProvider that may be used // by components to trace their internal operations. + // + // If the returned provider is a wrapper, consider implementing + // the `Unwrap() trace.TracerProvider` method to grant components access to the underlying SDK. CreateTracerProvider(context.Context, TracerSettings, component.Config) (TracerProvider, error) // unexportedFactoryFunc is used to prevent external implementations of Factory.