Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build Errors with recent OpenTelemetry SDK update 0.26.0 with the trait `opentelemetry::trace::tracer::Tracer' #2167

Closed
douggynix opened this issue Oct 2, 2024 · 6 comments

Comments

@douggynix
Copy link

douggynix commented Oct 2, 2024

Opentelemetry SDK recent update seems breaking some features provided in the documentation itself. For example, this one below is giving errors about Traits not implemented.
Is there a pending fix for this issue? This recent update is breaking code that was working before as stated being correct by the official documentation.

----------- ^^^^^^ the trait `opentelemetry::trace::tracer::Tracer` is not implemented for `opentelemetry_sdk::trace::tracer::Tracer`
let otel_layer = tracing_opentelemetry::layer().with_tracer(tracer);
                                                       |required by a bound introduced by this call

    = help: the following other types implement trait `opentelemetry::trace::tracer::Tracer`:
              opentelemetry::global::trace::BoxedTracer
              opentelemetry::trace::noop::NoopTracer
              opentelemetry_sdk::trace::tracer::Tracer
note: required by a bound in `OpenTelemetryLayer::<S, T>::with_tracer`
   --> /home/douggy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tracing-opentelemetry-0.26.0/src/layer.rs:591:17
    |
589 |     pub fn with_tracer<Tracer>(self, tracer: Tracer) -> OpenTelemetryLayer<S, Tracer>
    |            ----------- required by a bound in this associated function
590 |     where
591 |         Tracer: otel::Tracer + PreSampledTracer + 'static,
    |                 ^^^^^^^^^^^^ required by this bound in `OpenTelemetryLayer::<S, T>::with_tracer`
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::Registry;
use opentelemetry::trace::TracerProvider;

fn main(){
    let otlp_exporter = opentelemetry_otlp::new_exporter().tonic();
    let tracer = opentelemetry_otlp::new_pipeline()
        .tracing()
        .with_exporter(otlp_exporter)
        .install_simple()
        .unwrap()
        .tracer("trace_demo");

    // Create a layer with the configured tracer
    let otel_layer = tracing_opentelemetry::layer().with_tracer(tracer);
}
@douggynix douggynix changed the title Build Errors with recent OpenTelemetry SDK update 0.26.0 Build Errors with recent OpenTelemetry SDK update 0.26.0 with the trait `opentelemetry::trace::tracer::Tracer' Oct 2, 2024
@lalitb
Copy link
Member

lalitb commented Oct 2, 2024

What is the version of tracing_opentelemetry you are using? I don't think there is a version available supporting otel v26. refer - tokio-rs/tracing-opentelemetry#169

@douggynix
Copy link
Author

@lalitb From my Cargo.toml, i am using these dependencies. and the tracing version is

opentelemetry = "0.26.0"
opentelemetry-otlp = { version = "0.26.0", features = ["reqwest-client"] }
opentelemetry-semantic-conventions = "0.26.0"
opentelemetry_sdk = { version = "0.26.0", features = ["tokio", "rt-tokio"] }

tracing = { version = "0.1.40", features = ["log"] }
tracing-actix-web = "0.7.13"
tracing-bunyan-formatter = "0.3.9"
tracing-log = "0.2.0"
tracing-opentelemetry = "0.26.0"
tracing-subscriber = { version = "0.3.18", features = ["registry", "env-filter"] }

However I am seeing both version from Cargo.lock :

[[package]]
name = "tracing-opentelemetry"
version = "0.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9784ed4da7d921bc8df6963f8c80a0e4ce34ba6ba76668acadd3edbd985ff3b"
dependencies = [
"js-sys",
"once_cell",
"opentelemetry 0.24.0",
"opentelemetry_sdk 0.24.1",
"smallvec",
"tracing",
"tracing-core",
"tracing-log 0.2.0",
"tracing-subscriber",
"web-time",
]

[[package]]
name = "tracing-opentelemetry"
version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5eabc56d23707ad55ba2a0750fc24767125d5a0f51993ba41ad2c441cc7b8dea"
dependencies = [
"js-sys",
"once_cell",
"opentelemetry 0.25.0",
"opentelemetry_sdk 0.25.0",
"smallvec",
"tracing",
"tracing-core",
"tracing-log 0.2.0",
"tracing-subscriber",
"web-time",
]

@lalitb
Copy link
Member

lalitb commented Oct 2, 2024

@douggynix This won't work, you need to wait for tracing-opentelemetry v0.27.0, which will bring the support for otel v0.26.

@douggynix
Copy link
Author

I have 'reqwest' crate with tracing feature enabled. It seems pointing to the older version of the tracing crate:
[[package]]
name = "reqwest-tracing"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfdd9bfa64c72233d8dd99ab7883efcdefe9e16d46488ecb9228b71a2e2ceb45"
dependencies = [
"anyhow",
"async-trait",
"getrandom",
"http 1.1.0",
"matchit 0.8.4",
"opentelemetry 0.24.0",
"reqwest",
"reqwest-middleware",
"tracing",
"tracing-opentelemetry 0.25.0",
]

@douggynix
Copy link
Author

You would suggest me to downgrade opentelemetry sdk. Thanks for your suggestion. I am going to undo all these updates

@lalitb
Copy link
Member

lalitb commented Oct 3, 2024

Closing this issue as the error is caused by incompatible OpenTelemetry versions across other crates that are bringing OpenTelemetry as a dependency.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants