Skip to content

Commit 92e53f2

Browse files
committed
Merge branch 'msrv-check-v1.70.0' of github.com:lalitb/opentelemetry-rust into msrv-check-v1.70.0
2 parents 434ea09 + df135dc commit 92e53f2

File tree

17 files changed

+2532
-1306
lines changed

17 files changed

+2532
-1306
lines changed

.github/workflows/semver.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@ jobs:
1919
with:
2020
components: rustfmt
2121
- name: cargo-semver-checks
22-
uses: obi1kenobi/cargo-semver-checks-action@v2.3
22+
uses: obi1kenobi/cargo-semver-checks-action@v2.4

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use opentelemetry::{
77
};
88
use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge;
99
use opentelemetry_otlp::WithExportConfig;
10-
use opentelemetry_sdk::trace as sdktrace;
10+
use opentelemetry_sdk::trace::{self as sdktrace, Config};
1111
use opentelemetry_sdk::{
1212
logs::{self as sdklogs},
1313
Resource,
@@ -45,7 +45,7 @@ fn init_tracer_provider() -> Result<sdktrace::TracerProvider, TraceError> {
4545
.http()
4646
.with_endpoint("http://localhost:4318/v1/traces"),
4747
)
48-
.with_trace_config(sdktrace::config().with_resource(RESOURCE.clone()))
48+
.with_trace_config(Config::default().with_resource(RESOURCE.clone()))
4949
.install_batch(opentelemetry_sdk::runtime::Tokio)
5050
}
5151

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use opentelemetry::{
99
};
1010
use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge;
1111
use opentelemetry_otlp::{ExportConfig, WithExportConfig};
12+
use opentelemetry_sdk::trace::Config;
1213
use opentelemetry_sdk::{runtime, trace as sdktrace, Resource};
1314
use std::error::Error;
1415
use tracing::info;
@@ -30,7 +31,7 @@ fn init_tracer_provider() -> Result<sdktrace::TracerProvider, TraceError> {
3031
.tonic()
3132
.with_endpoint("http://localhost:4317"),
3233
)
33-
.with_trace_config(sdktrace::config().with_resource(RESOURCE.clone()))
34+
.with_trace_config(Config::default().with_resource(RESOURCE.clone()))
3435
.install_batch(runtime::Tokio)
3536
}
3637

opentelemetry-sdk/CHANGELOG.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,11 @@
4141
- `SpanData` doesn't have the resource attributes. The `SpanExporter::export()` method needs to merge it
4242
with the earlier preserved resource before export.
4343

44-
- **Breaking** [1836](https://github.com/open-telemetry/opentelemetry-rust/pull/1836) `SpanProcessor::shutdown` now takes an immutable reference to self. Any reference can call shutdown on the processor. After the first call to `shutdown` the processor will not process any new spans.
44+
- **Breaking** [1836](https://github.com/open-telemetry/opentelemetry-rust/pull/1836) `SpanProcessor::shutdown` now takes an immutable reference to self. Any reference can call shutdown on the processor. After the first call to `shutdown` the processor will not process any new spans.
45+
46+
- **Breaking** [1850] (https://github.com/open-telemetry/opentelemetry-rust/pull/1850) `LoggerProvider::log_processors()` and `LoggerProvider::resource()` are not public methods anymore. They are only used within the `opentelemetry-sdk` crate.
47+
48+
- [1857](https://github.com/open-telemetry/opentelemetry-rust/pull/1857) Fixed an issue in Metrics SDK which prevented export errors from being send to global error handler. With the fix, errors occurring during export like OTLP Endpoint unresponsive shows up in stderr by default.
4549

4650
## v0.23.0
4751

opentelemetry-sdk/benches/attribute_set.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use opentelemetry::KeyValue;
33
use opentelemetry_sdk::metrics::AttributeSet;
44

55
// Run this benchmark with:
6-
// cargo bench --bench attribute_set --features=metrics
6+
// cargo bench --bench attribute_set
77

88
fn criterion_benchmark(c: &mut Criterion) {
99
attribute_set(c);

opentelemetry-sdk/benches/log.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
//! run with `$ cargo bench --bench log --features=logs -- --exact <test_name>` to run specific test for logs
2-
//! So to run test named "full-log-with-attributes/with-context" you would run `$ cargo bench --bench log --features=logs -- --exact full-log-with-attributes/with-context`
3-
//! To run all tests for logs you would run `$ cargo bench --bench log --features=logs`
1+
//! run with `$ cargo bench --bench log -- --exact <test_name>` to run specific test for logs
2+
//! So to run test named "full-log-with-attributes/with-context" you would run `$ cargo bench --bench log -- --exact full-log-with-attributes/with-context`
3+
//! To run all tests for logs you would run `$ cargo bench --bench log`
44
//!
55
66
use std::collections::HashMap;

opentelemetry-sdk/benches/metric_counter.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ thread_local! {
3030
}
3131

3232
// Run this benchmark with:
33-
// cargo bench --bench metric_counter --features=metrics
33+
// cargo bench --bench metric_counter
3434
fn create_counter() -> Counter<u64> {
3535
let meter_provider: SdkMeterProvider = SdkMeterProvider::builder()
3636
.with_reader(ManualReader::builder().build())

opentelemetry-sdk/src/logs/log_emitter.rs

+13-12
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,12 @@ impl LoggerProvider {
9090
Builder::default()
9191
}
9292

93-
/// Resource associated with this provider.
94-
pub fn resource(&self) -> &Resource {
95-
&self.inner.resource
93+
pub(crate) fn log_processors(&self) -> &[Box<dyn LogProcessor>] {
94+
&self.inner.processors
9695
}
9796

98-
/// Log processors associated with this provider.
99-
pub fn log_processors(&self) -> &[Box<dyn LogProcessor>] {
100-
&self.inner.processors
97+
pub(crate) fn resource(&self) -> &Resource {
98+
&self.inner.resource
10199
}
102100

103101
/// Force flush all remaining logs in log processors and return results.
@@ -196,17 +194,20 @@ impl Builder {
196194
/// Create a new provider from this configuration.
197195
pub fn build(self) -> LoggerProvider {
198196
let resource = self.resource.unwrap_or_default();
199-
// invoke set_resource on all the processors
200-
for processor in &self.processors {
201-
processor.set_resource(&resource);
202-
}
203-
LoggerProvider {
197+
198+
let logger_provider = LoggerProvider {
204199
inner: Arc::new(LoggerProviderInner {
205200
processors: self.processors,
206201
resource,
207202
}),
208203
is_shutdown: Arc::new(AtomicBool::new(false)),
204+
};
205+
206+
// invoke set_resource on all the processors
207+
for processor in logger_provider.log_processors() {
208+
processor.set_resource(logger_provider.resource());
209209
}
210+
logger_provider
210211
}
211212
}
212213

@@ -511,7 +512,7 @@ mod tests {
511512

512513
#[test]
513514
fn global_shutdown_test() {
514-
// cargo test shutdown_test --features=logs
515+
// cargo test global_shutdown_test --features=testing
515516

516517
// Arrange
517518
let shutdown_called = Arc::new(Mutex::new(false));

opentelemetry-sdk/src/logs/log_processor.rs

+15-8
Original file line numberDiff line numberDiff line change
@@ -536,7 +536,7 @@ mod tests {
536536

537537
#[derive(Debug, Clone)]
538538
struct MockLogExporter {
539-
resource: Arc<Option<Resource>>,
539+
resource: Arc<Mutex<Option<Resource>>>,
540540
}
541541

542542
#[async_trait]
@@ -548,15 +548,19 @@ mod tests {
548548
fn shutdown(&mut self) {}
549549

550550
fn set_resource(&mut self, resource: &Resource) {
551-
let res = Arc::make_mut(&mut self.resource);
552-
*res = Some(resource.clone());
551+
self.resource
552+
.lock()
553+
.map(|mut res_opt| {
554+
res_opt.replace(resource.clone());
555+
})
556+
.expect("mock log exporter shouldn't error when setting resource");
553557
}
554558
}
555559

556560
// Implementation specific to the MockLogExporter, not part of the LogExporter trait
557561
impl MockLogExporter {
558562
fn get_resource(&self) -> Option<Resource> {
559-
(*self.resource).clone()
563+
(*self.resource).lock().unwrap().clone()
560564
}
561565
}
562566

@@ -713,7 +717,7 @@ mod tests {
713717
#[test]
714718
fn test_set_resource_simple_processor() {
715719
let exporter = MockLogExporter {
716-
resource: Arc::new(Some(Resource::default())),
720+
resource: Arc::new(Mutex::new(None)),
717721
};
718722
let processor = SimpleLogProcessor::new(Box::new(exporter.clone()));
719723
let _ = LoggerProvider::builder()
@@ -723,15 +727,16 @@ mod tests {
723727
KeyValue::new("k2", "v3"),
724728
KeyValue::new("k3", "v3"),
725729
KeyValue::new("k4", "v4"),
730+
KeyValue::new("k5", "v5"),
726731
]))
727732
.build();
728-
assert_eq!(exporter.get_resource().unwrap().into_iter().count(), 4);
733+
assert_eq!(exporter.get_resource().unwrap().into_iter().count(), 5);
729734
}
730735

731736
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
732737
async fn test_set_resource_batch_processor() {
733738
let exporter = MockLogExporter {
734-
resource: Arc::new(Some(Resource::default())),
739+
resource: Arc::new(Mutex::new(None)),
735740
};
736741
let processor = BatchLogProcessor::new(
737742
Box::new(exporter.clone()),
@@ -745,9 +750,11 @@ mod tests {
745750
KeyValue::new("k2", "v3"),
746751
KeyValue::new("k3", "v3"),
747752
KeyValue::new("k4", "v4"),
753+
KeyValue::new("k5", "v5"),
748754
]))
749755
.build();
750-
assert_eq!(exporter.get_resource().unwrap().into_iter().count(), 4);
756+
tokio::time::sleep(Duration::from_secs(2)).await; // set resource in batch span processor is not blocking. Should we make it blocking?
757+
assert_eq!(exporter.get_resource().unwrap().into_iter().count(), 5);
751758
let _ = provider.shutdown();
752759
}
753760

0 commit comments

Comments
 (0)