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

Document need of opentelemetry::global::shutdown_tracer_provider()? #122

Open
alexpdp7 opened this issue Apr 12, 2024 · 2 comments
Open

Comments

@alexpdp7
Copy link

Feature Request

Motivation

I was playing with tracing and OpenTelemetry and I was noticing that under some conditions, my test applications were not sending traces at all.

Looking at one of the examples, I saw opentelemetry::global::shutdown_tracer_provider(). Adding this at the end of my program made things work reliably (apparently!).

I think this is related to very short programs that run quickly. Somehow accumulated traces are lost on exit.

Proposal

While this is documented in the opentelemetry crate, and I found it in the examples, I think users of this crate would appreciate some nudging towards this.

Alternatives

Or perhaps, the shutdown can happen automatically? That would be even better.

@jonefeewang
Copy link

In my case, it's quite the opposite. This call has had no effect whatsoever. The application exits quickly after receiving a SIGINT, and no span is exported—I can clearly sense it. The program must wait for 10 seconds upon exit to ensure the export of spans.

My initialization method is identical to the one provided in the project's example: opentelemetry-otlp.rs.
My operating environment:

docker run -d -p4317:4317 -p16686:16686 jaegertracing/all-in-one:latest

opentelemetry = { version = "0.25", features = ["trace", "metrics"] }
opentelemetry_sdk = { version = "0.25", default-features = false, features = [
"trace",
"rt-tokio",
] }
opentelemetry-stdout = { version = "0.25", features = ["trace", "metrics"] }
opentelemetry-otlp = { version = "0.25", features = ["metrics"] }
opentelemetry-semantic-conventions = "0.25"
tracing-subscriber = { version = "0.3.0", default-features = false, features = [
"registry",
"std",
"fmt",
"chrono",
"env-filter",
"ansi",
"tracing-log",
] }
tracing-opentelemetry = "=0.26.0"
tracing-core = "0.1.28"

@mladedav
Copy link
Contributor

If you send a SIGINT and don't handle it, shutdown_tracer_provider is never called so it's somewhat expected the spans weren't exported. Or am I misunderstanding what you were trying to say?

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

3 participants