Skip to content

Commit aae7bff

Browse files
authored
Merge branch 'main' into utpilla/Fix-typos
2 parents db312b0 + b1a80ee commit aae7bff

File tree

12 files changed

+84
-49
lines changed

12 files changed

+84
-49
lines changed

.github/workflows/ci.yml

+2-4
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,8 @@ jobs:
110110
- uses: dtolnay/rust-toolchain@1.65.0
111111
- name: Patch dependencies versions # some dependencies bump MSRV without major version bump
112112
run: bash ./scripts/patch_dependencies.sh
113-
- name: Run tests
114-
run: cargo --version &&
115-
cargo test --manifest-path=opentelemetry/Cargo.toml --features trace,metrics,testing &&
116-
cargo test --manifest-path=opentelemetry-zipkin/Cargo.toml
113+
- name: Check MSRV for all crates
114+
run: bash ./scripts/msrv.sh
117115
cargo-deny:
118116
runs-on: ubuntu-latest # This uses the step `EmbarkStudios/cargo-deny-action@v1` which is only supported on Linux
119117
continue-on-error: true # Prevent sudden announcement of a new advisory from failing ci

CONTRIBUTING.md

+5
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ You can provide the protocol compiler protoc path programmatically (only works w
3737
export PROTOC=$(which protoc)
3838
```
3939

40+
It is recommended to use "3.15" or newer of protoc, as some of the proto
41+
definitions include "optional" fields, that are not supported in older versions,
42+
resulting in errors as shown
43+
[here](https://github.com/open-telemetry/opentelemetry-proto/issues/451).
44+
4045
Prerequisites to build the protocol compiler protoc from source
4146

4247
- [protoc](https://github.com/protocolbuffers/protobuf)

examples/tracing-jaeger/src/main.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use opentelemetry_semantic_conventions::resource::SERVICE_NAME;
1010

1111
use std::error::Error;
1212

13-
fn init_tracer() -> Result<opentelemetry_sdk::trace::Tracer, TraceError> {
13+
fn init_tracer_provider() -> Result<opentelemetry_sdk::trace::TracerProvider, TraceError> {
1414
opentelemetry_otlp::new_pipeline()
1515
.tracing()
1616
.with_exporter(
@@ -29,7 +29,8 @@ fn init_tracer() -> Result<opentelemetry_sdk::trace::Tracer, TraceError> {
2929

3030
#[tokio::main]
3131
async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
32-
let _tracer = init_tracer().expect("Failed to initialize tracer.");
32+
let tracer_provider = init_tracer_provider().expect("Failed to initialize tracer provider.");
33+
global::set_tracer_provider(tracer_provider.clone());
3334

3435
let tracer = global::tracer("tracing-jaeger");
3536
tracer.in_span("main-operation", |cx| {

opentelemetry-otlp/CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ Instead of using
1212
`.with_config(Config::default().with_resource(RESOURCE::default()))` users must
1313
now use `.with_resource(RESOURCE::default())` to configure Resource when using
1414
`OtlpLogPipeline`.
15+
- **Breaking** The methods `OtlpTracePipeline::install_simple()` and `OtlpTracePipeline::install_batch()` would now return `TracerProvider` instead of `Tracer`.
16+
These methods would also no longer set the global tracer provider. It would now be the responsibility of users to set it by calling `global::set_tracer_provider(tracer_provider.clone());`. Refer to the [basic-otlp](https://github.com/open-telemetry/opentelemetry-rust/blob/main/opentelemetry-otlp/examples/basic-otlp/src/main.rs) and [basic-otlp-http](https://github.com/open-telemetry/opentelemetry-rust/blob/main/opentelemetry-otlp/examples/basic-otlp-http/src/main.rs) examples on how to initialize OTLP Trace Exporter.
1517

1618
## v0.16.0
1719

opentelemetry-otlp/examples/basic-otlp-http/src/main.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ fn init_logs() -> Result<sdklogs::LoggerProvider, opentelemetry::logs::LogError>
3737
.install_batch(opentelemetry_sdk::runtime::Tokio)
3838
}
3939

40-
fn init_tracer() -> Result<sdktrace::Tracer, TraceError> {
40+
fn init_tracer_provider() -> Result<sdktrace::TracerProvider, TraceError> {
4141
opentelemetry_otlp::new_pipeline()
4242
.tracing()
4343
.with_exporter(
@@ -67,13 +67,16 @@ fn init_metrics() -> Result<opentelemetry_sdk::metrics::SdkMeterProvider, Metric
6767

6868
#[tokio::main]
6969
async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
70-
let result = init_tracer();
70+
let result = init_tracer_provider();
7171
assert!(
7272
result.is_ok(),
7373
"Init tracer failed with error: {:?}",
7474
result.err()
7575
);
7676

77+
let tracer_provider = result.unwrap();
78+
global::set_tracer_provider(tracer_provider.clone());
79+
7780
let result = init_metrics();
7881
assert!(
7982
result.is_ok(),

opentelemetry-otlp/examples/basic-otlp/src/main.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ static RESOURCE: Lazy<Resource> = Lazy::new(|| {
2222
)])
2323
});
2424

25-
fn init_tracer() -> Result<sdktrace::Tracer, TraceError> {
25+
fn init_tracer_provider() -> Result<sdktrace::TracerProvider, TraceError> {
2626
opentelemetry_otlp::new_pipeline()
2727
.tracing()
2828
.with_exporter(
@@ -72,12 +72,14 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
7272
// matches the containing block, reporting traces and metrics during the whole
7373
// execution.
7474

75-
let result = init_tracer();
75+
let result = init_tracer_provider();
7676
assert!(
7777
result.is_ok(),
7878
"Init tracer failed with error: {:?}",
7979
result.err()
8080
);
81+
let tracer_provider = result.unwrap();
82+
global::set_tracer_provider(tracer_provider.clone());
8183

8284
let result = init_metrics();
8385
assert!(

opentelemetry-otlp/src/lib.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@
120120
//! on the choice of exporters.
121121
//!
122122
//! ```no_run
123-
//! use opentelemetry::{KeyValue, trace::Tracer};
123+
//! use opentelemetry::{global, KeyValue, trace::Tracer};
124124
//! use opentelemetry_sdk::{trace::{self, RandomIdGenerator, Sampler}, Resource};
125125
//! # #[cfg(feature = "metrics")]
126126
//! use opentelemetry_sdk::metrics::reader::{DefaultAggregationSelector, DefaultTemporalitySelector};
@@ -138,7 +138,7 @@
138138
//! map.insert("x-number", "123".parse().unwrap());
139139
//! map.insert_bin("trace-proto-bin", MetadataValue::from_bytes(b"[binary data]"));
140140
//!
141-
//! let tracer = opentelemetry_otlp::new_pipeline()
141+
//! let tracer_provider = opentelemetry_otlp::new_pipeline()
142142
//! .tracing()
143143
//! .with_exporter(
144144
//! opentelemetry_otlp::new_exporter()
@@ -157,6 +157,8 @@
157157
//! .with_resource(Resource::new(vec![KeyValue::new("service.name", "example")])),
158158
//! )
159159
//! .install_batch(opentelemetry_sdk::runtime::Tokio)?;
160+
//! global::set_tracer_provider(tracer_provider);
161+
//! let tracer = global::tracer("tracer-name");
160162
//! # tracer
161163
//! # };
162164
//!

opentelemetry-otlp/src/logs.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,9 @@ impl OtlpLogPipeline<NoExporterConfig> {
151151
impl OtlpLogPipeline<LogExporterBuilder> {
152152
/// Install the configured log exporter.
153153
///
154-
/// Returns a [`Logger`] with the name `opentelemetry-otlp` and the current crate version.
154+
/// Returns a [`LoggerProvider`].
155155
///
156-
/// [`Logger`]: opentelemetry_sdk::logs::Logger
156+
/// [`LoggerProvider`]: opentelemetry_sdk::logs::LoggerProvider
157157
pub fn install_simple(self) -> Result<opentelemetry_sdk::logs::LoggerProvider, LogError> {
158158
Ok(build_simple_with_exporter(
159159
self.exporter_builder.build_log_exporter()?,
@@ -164,9 +164,9 @@ impl OtlpLogPipeline<LogExporterBuilder> {
164164
/// Install the configured log exporter and a batch log processor using the
165165
/// specified runtime.
166166
///
167-
/// Returns a [`Logger`] with the name `opentelemetry-otlp` and the current crate version.
167+
/// Returns a [`LoggerProvider`].
168168
///
169-
/// [`Logger`]: opentelemetry_sdk::logs::Logger
169+
/// [`LoggerProvider`]: opentelemetry_sdk::logs::LoggerProvider
170170
pub fn install_batch<R: RuntimeChannel>(
171171
self,
172172
runtime: R,

opentelemetry-otlp/src/span.rs

+12-26
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@
55
use std::fmt::Debug;
66

77
use futures_core::future::BoxFuture;
8-
use opentelemetry::{
9-
global,
10-
trace::{TraceError, TracerProvider},
11-
};
8+
use opentelemetry::trace::TraceError;
129
use opentelemetry_sdk::{
1310
self as sdk,
1411
export::trace::{ExportResult, SpanData},
@@ -99,10 +96,10 @@ impl OtlpTracePipeline<NoExporterConfig> {
9996
impl OtlpTracePipeline<SpanExporterBuilder> {
10097
/// Install the configured span exporter.
10198
///
102-
/// Returns a [`Tracer`] with the name `opentelemetry-otlp` and current crate version.
99+
/// Returns a [`TracerProvider`].
103100
///
104-
/// [`Tracer`]: opentelemetry::trace::Tracer
105-
pub fn install_simple(self) -> Result<sdk::trace::Tracer, TraceError> {
101+
/// [`TracerProvider`]: opentelemetry::trace::TracerProvider
102+
pub fn install_simple(self) -> Result<sdk::trace::TracerProvider, TraceError> {
106103
Ok(build_simple_with_exporter(
107104
self.exporter_builder.build_span_exporter()?,
108105
self.trace_config,
@@ -112,15 +109,15 @@ impl OtlpTracePipeline<SpanExporterBuilder> {
112109
/// Install the configured span exporter and a batch span processor using the
113110
/// specified runtime.
114111
///
115-
/// Returns a [`Tracer`] with the name `opentelemetry-otlp` and current crate version.
112+
/// Returns a [`TracerProvider`].
116113
///
117114
/// `install_batch` will panic if not called within a tokio runtime
118115
///
119-
/// [`Tracer`]: opentelemetry::trace::Tracer
116+
/// [`TracerProvider`]: opentelemetry::trace::TracerProvider
120117
pub fn install_batch<R: RuntimeChannel>(
121118
self,
122119
runtime: R,
123-
) -> Result<sdk::trace::Tracer, TraceError> {
120+
) -> Result<sdk::trace::TracerProvider, TraceError> {
124121
Ok(build_batch_with_exporter(
125122
self.exporter_builder.build_span_exporter()?,
126123
self.trace_config,
@@ -133,26 +130,21 @@ impl OtlpTracePipeline<SpanExporterBuilder> {
133130
fn build_simple_with_exporter(
134131
exporter: SpanExporter,
135132
trace_config: Option<sdk::trace::Config>,
136-
) -> sdk::trace::Tracer {
133+
) -> sdk::trace::TracerProvider {
137134
let mut provider_builder = sdk::trace::TracerProvider::builder().with_simple_exporter(exporter);
138135
if let Some(config) = trace_config {
139136
provider_builder = provider_builder.with_config(config);
140137
}
141-
let provider = provider_builder.build();
142-
let tracer = provider
143-
.tracer_builder("opentelemetry-otlp")
144-
.with_version(env!("CARGO_PKG_VERSION"))
145-
.build();
146-
let _ = global::set_tracer_provider(provider);
147-
tracer
138+
139+
provider_builder.build()
148140
}
149141

150142
fn build_batch_with_exporter<R: RuntimeChannel>(
151143
exporter: SpanExporter,
152144
trace_config: Option<sdk::trace::Config>,
153145
runtime: R,
154146
batch_config: Option<sdk::trace::BatchConfig>,
155-
) -> sdk::trace::Tracer {
147+
) -> sdk::trace::TracerProvider {
156148
let mut provider_builder = sdk::trace::TracerProvider::builder();
157149
let batch_processor = sdk::trace::BatchSpanProcessor::builder(exporter, runtime)
158150
.with_batch_config(batch_config.unwrap_or_default())
@@ -162,13 +154,7 @@ fn build_batch_with_exporter<R: RuntimeChannel>(
162154
if let Some(config) = trace_config {
163155
provider_builder = provider_builder.with_config(config);
164156
}
165-
let provider = provider_builder.build();
166-
let tracer = provider
167-
.tracer_builder("opentelemetry-otlp")
168-
.with_version(env!("CARGO_PKG_VERSION"))
169-
.build();
170-
let _ = global::set_tracer_provider(provider);
171-
tracer
157+
provider_builder.build()
172158
}
173159

174160
/// OTLP span exporter builder.

opentelemetry-otlp/tests/integration_test/tests/traces.rs

+3-5
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use std::error::Error;
1313
use std::fs::File;
1414
use std::os::unix::fs::MetadataExt;
1515

16-
fn init_tracer() -> Result<sdktrace::Tracer, TraceError> {
16+
fn init_tracer_provider() -> Result<sdktrace::TracerProvider, TraceError> {
1717
opentelemetry_otlp::new_pipeline()
1818
.tracing()
1919
.with_exporter(opentelemetry_otlp::new_exporter().tonic())
@@ -30,10 +30,8 @@ const LEMONS_KEY: Key = Key::from_static_str("lemons");
3030
const ANOTHER_KEY: Key = Key::from_static_str("ex.com/another");
3131

3232
pub async fn traces() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
33-
// By binding the result to an unused variable, the lifetime of the variable
34-
// matches the containing block, reporting traces and metrics during the whole
35-
// execution.
36-
let _ = init_tracer()?;
33+
let tracer_provider = init_tracer_provider().expect("Failed to initialize tracer provider.");
34+
global::set_tracer_provider(tracer_provider.clone());
3735

3836
let tracer = global::tracer("ex.com/basic");
3937

opentelemetry-otlp/tests/smoke.rs

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use futures_util::StreamExt;
2+
use opentelemetry::global;
23
use opentelemetry::global::shutdown_tracer_provider;
34
use opentelemetry::trace::{Span, SpanKind, Tracer};
45
use opentelemetry_otlp::WithExportConfig;
@@ -80,10 +81,10 @@ async fn smoke_tracer() {
8081
let (addr, mut req_rx) = setup().await;
8182

8283
{
83-
println!("Installing tracer...");
84+
println!("Installing tracer provider...");
8485
let mut metadata = tonic::metadata::MetadataMap::new();
8586
metadata.insert("x-header-key", "header-value".parse().unwrap());
86-
let tracer = opentelemetry_otlp::new_pipeline()
87+
let tracer_provider = opentelemetry_otlp::new_pipeline()
8788
.tracing()
8889
.with_exporter(
8990
#[cfg(feature = "gzip-tonic")]
@@ -101,6 +102,10 @@ async fn smoke_tracer() {
101102
.install_batch(opentelemetry_sdk::runtime::Tokio)
102103
.expect("failed to install");
103104

105+
global::set_tracer_provider(tracer_provider);
106+
107+
let tracer = global::tracer("smoke");
108+
104109
println!("Sending span...");
105110
let mut span = tracer
106111
.span_builder("my-test-span")

scripts/msrv.sh

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/bin/bash
2+
3+
set -eu
4+
5+
echo "Running msrv check for opentelemetry package"
6+
cargo check --manifest-path=opentelemetry/Cargo.toml --all-features
7+
8+
echo "Running msrv check for opentelemetry-sdk package"
9+
cargo check --manifest-path=opentelemetry-sdk/Cargo.toml --all-features
10+
11+
echo "Running msrv check for opentelemetry-stdout package"
12+
cargo check --manifest-path=opentelemetry-stdout/Cargo.toml --all-features
13+
14+
# TODO: Ignoring as this is failing with the following error:
15+
# error: package `prost-derive v0.12.6` cannot be built because it requires rustc 1.70 or newer, while the currently active rustc version is 1.65.0
16+
#echo "Running msrv check for opentelemetry-otlp package"
17+
# cargo check --manifest-path=opentelemetry-otlp/Cargo.toml --all-features
18+
19+
echo "Running msrv check for opentelemetry-http package"
20+
cargo check --manifest-path=opentelemetry-http/Cargo.toml --all-features
21+
22+
echo "Running msrv check for opentelemetry-jaeger-propagator package"
23+
cargo check --manifest-path=opentelemetry-jaeger-propagator/Cargo.toml --all-features
24+
25+
echo "Running msrv check for opentelemetry-zipkin package"
26+
cargo check --manifest-path=opentelemetry-zipkin/Cargo.toml --all-features
27+
28+
echo "Running msrv check for opentelemetry-appender-log package"
29+
cargo check --manifest-path=opentelemetry-appender-log/Cargo.toml --all-features
30+
31+
echo "Running msrv check for opentelemetry-appender-tracing package"
32+
cargo check --manifest-path=opentelemetry-appender-tracing/Cargo.toml --all-features
33+

0 commit comments

Comments
 (0)