Co-authored-by: Harold Dost <github@hdost.com>
Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
* feat(jaeger): better configuration pipeline.
- Separate agent pipeline and collector pipeline. it's now `new_agent_pipeline` and `new_collector_pipeline`
- Add `Configurable` trait to include common attributes shared by agent pipeline and collector pipeline.
- Removed `with_tag` method.
- Make build in http client additive. `surf_collector_client`, `isahc_collector_client`, etc. are now just allow user to choose the http client.
* fix(jaeger): Move CommonConfig and HasRequiredConfig to private mod to meet MSRV requirement. Rename CommonConfig to TransformationConfig.
* chore: make format happy.
* chore: make msrv happy.
* test: add unit tests.
* refactor(jaeger): removed the `Configurable` trait
* fix(jaeger): fix code link
* proto: add opentelemetry-proto crate.
Separate generated proto definitions and it's transformation with types in opentelemety into a new crate.
* proto: fix tests.
* proto: add features in proto
* proto: merge upstream
* refactor(otlp,proto): Clean up features and imports
- add the `grpc-tonic` feature
- add the `build-server` feature
- reordered imports in otlp
BREAKING CHANGE: add the `grpc-tonic` feature
* refactor(otlp,proto): remove prost generated files
We can just use tonic generated types without clients.
* refactor(otlp,proto): update submodule
* refactor(otlp): guard trace related code using trace feature
* docs(proto): add proto docs
* feature(proto): update proto version
Update proto version to 0.9. See https://github.com/open-telemetry/opentelemetry-proto/tree/v0.9.0
* refactor(all): merge upstream
* style(all): add one line at the end of files
* fix(examples): fix external-otlp-grpcio-async-std example
Use the new `trace` feature
* chore: update the NoHttpClient error message
Adds a hint to the error message to make it better understandable to users how to resolve the error
* chore: Use fully qualified stream import (metrics)
* Add opentelemetry-dynatrace crate
Remove all trace flags except `sampled` as that is the only supported
flag in the current trace spec. Removes `SpanContext::is_deferred` and
`SpanContex::is_debug` as they are also no longer supported.
Configure the async runtime (Tokio, async-std, ...) in Rust using
`with_runtime(runtime)` on the trace pipeline builders instead of using
cargo features.
The main advantages of using Rust code is that cargo doesn't have a way
of describing mutually exclusive features at the moment. We currently
fall back to Tokio if multiple runtime features are enabled. This can be
confusing, especially if a runtime feature is enabled by another crate.
Choosing the runtime in Rust code means the entire trace pipeline
configuration is in one place.
`tonic` and `grpcio` take different approaches in serializing and sending spans. This change use an enum to represent the two grpc layers. If users want to bring their own grpc layer, they can implement `TracerExporter` and `SpanExporter` and then install it.
This adds a suite of tests to ensure the global tracer provider shuts down properly using different runtimes. For optimal performance it is often preferable to spawn shutdown tasks using `tokio::spawn` instead of `tokio::spawn_blocking`, but in order to have a consistent API between blocking and non-blocking programs, then shutdown code will block on some tasks. This can cause deadlocks with single-threaded runtimes, the current solution is to spawn the background task in a separate thread if single threaded runtime features are present.
Add support for the [tonic](https://github.com/hyperium/tonic) implementation of the gRPC transport layer to `opentelemetry-otlp`.
- Use tonic as the underlying gRPC transport layer (default)
- Optional: TLS support using rustls
- Optional: Use the platform's native certificate store
- Optional: Use an async client
This patch simplifies the global module by implementing
`GenericProvider` and `GenericTracer` on impls of `Provider` and
`Tracer` directly. These changes remove multiple levels of boxing that
were necessary with the previous implementation.