opentelemetry-rust icon indicating copy to clipboard operation
opentelemetry-rust copied to clipboard

[Regression]: opentelemetry_sdk::TracerProvider::span_processors no longer public

Open demurgos opened this issue 5 months ago • 3 comments

What happened?

PR https://github.com/open-telemetry/opentelemetry-rust/pull/1755 did some API clean-ups, but it was too aggressive and turned some useful APIs private. In particular opentelemetry_sdk::TracerProvider::span_processors was pub but is now only pub(crate).

I have an HTTP server that acts as an OTLP proxy. A tracer provider is configured with exporters. This tracers is then used either to directly write traces for the main server, or to forward traces received through POST /v1/traces/. To forward already existing spans received through OTLP, you need access to the span_processors. This was previously exposed by opentelemetry_sdk::TracerProvider::span_processors in version 0.23.0 but since version 0.24.0 it is no longer exposed.

Please expose this method so it is possible to wrap a tracer provider into a higher level tracer provider adapter.

API Version

0.24.0

SDK Version

0.24.1

What Exporter(s) are you seeing the problem on?

OTLP

Relevant log output

error[E0624]: method `span_processors` is private
  --> crates/core/src/opentelemetry/mod.rs:28:43
   |
28 |       Self::Regular(provider) => provider.span_processors(),
   |                                           ^^^^^^^^^^^^^^^ private method
   |
  ::: /home/demurgos/.cargo/registry/src/index.crates.io-6f17d22bba15001f/opentelemetry_sdk-0.24.1/src/trace/provider.rs:92:5
   |
92 |     pub(crate) fn span_processors(&self) -> &[Box<dyn SpanProcessor>] {
   |     ----------------------------------------------------------------- private method defined here

demurgos avatar Aug 28 '24 01:08 demurgos