Description
Bug Report
Version
├── tracing v0.1.14 ()
├── tracing-attributes v0.1.8 ()
├── tracing-futures v0.2.4 ()
├── tracing-opentelemetry v0.4.0 ()
└── tracing-subscriber v0.2.5 (*)
As well as the rocket-middleware (which works)
├── rocket-tracing v0.1.0 (https://github.com/Nordgedanken/rocket-tracing.git#0c166efc)
│ ├── opentelemetry v0.5.0 ()
│ ├── tracing v0.1.14
│ │ ├── tracing-attributes v0.1.8
│ │ └── tracing-core v0.1.10
│ ├── tracing-futures v0.2.4
│ │ └── tracing v0.1.14 ()
│ └── tracing-opentelemetry v0.4.0
│ ├── opentelemetry v0.5.0 ()
│ ├── rand v0.7.3 ()
│ ├── tracing v0.1.14 ()
│ ├── tracing-core v0.1.10 ()
│ └── tracing-subscriber v0.2.5
│ └── tracing-core v0.1.10 (*)
As well as opentracing-jaeger: v0.4.0
And as well as rocket v0.5.0-dev (branch "async" commit "78c8ac8c"
Platform
Windows 10 64-bit
Description
Using the tracing lib with rocket seems to make problems with #[instrument]
.
It doesn't come up in the jaeger overview while a manually created span does show up just fine.
use tracing_opentelemetry::OpenTelemetryLayer;
use tracing_subscriber::Registry;
use opentelemetry::sdk::Tracer;
use rocket::get;
use rocket::routes;
#[get("/world")]
#[tracing::instrument]
fn world() -> &'static str {
"hello, world!"
}
fn init_tracer() -> std::result::Result<(), Box<dyn std::error::Error>> {
use opentelemetry::api::Provider;
use opentelemetry::sdk;
use tracing_subscriber::prelude::*;
let exporter = opentelemetry_jaeger::Exporter::builder()
.with_agent_endpoint("127.0.0.1:6831".parse().unwrap())
.with_process(opentelemetry_jaeger::Process {
service_name: "conduit".to_string(),
tags: Vec::new(),
})
.init()?;
let provider = sdk::Provider::builder()
.with_simple_exporter(exporter)
.with_config(sdk::Config {
default_sampler: Box::new(sdk::Sampler::Always),
..Default::default()
})
.build();
let tracer = provider.get_tracer("tracing");
let opentelemetry: OpenTelemetryLayer<Registry, Tracer> =
tracing_opentelemetry::layer().with_tracer(tracer);
tracing_subscriber::registry()
.with(opentelemetry)
.try_init()?;
Ok(())
}
fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
init_tracer()?;
rocket::ignite().mount("/", routes![world]).launch.unwrap();
Ok(())
}
I made sure to also check the proc macro order. Both don't seem to work.
Adding a rocket middleware/fairing and adding the proc macro to "on_request" or "on_response" in it does work with this code. It only seems to happen on the request handlers