Skip to content

Commit 1aca212

Browse files
authored
Simplifiy OTLP Example Resource creation (#2660)
1 parent e68fe94 commit 1aca212

File tree

4 files changed

+28
-21
lines changed

4 files changed

+28
-21
lines changed

opentelemetry-otlp/examples/basic-otlp-http/Cargo.toml

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ default = ["reqwest-blocking"]
1010
reqwest-blocking = ["opentelemetry-otlp/reqwest-blocking-client"]
1111

1212
[dependencies]
13-
once_cell = { workspace = true }
1413
opentelemetry = { path = "../../../opentelemetry" }
1514
opentelemetry_sdk = { path = "../../../opentelemetry-sdk" }
1615
opentelemetry-otlp = { path = "../.."}

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

+14-10
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use once_cell::sync::Lazy;
21
use opentelemetry::{
32
global,
43
trace::{TraceContextExt, Tracer},
@@ -11,16 +10,21 @@ use opentelemetry_sdk::Resource;
1110
use opentelemetry_sdk::{
1211
logs::SdkLoggerProvider, metrics::SdkMeterProvider, trace::SdkTracerProvider,
1312
};
14-
use std::error::Error;
13+
use std::{error::Error, sync::OnceLock};
1514
use tracing::info;
1615
use tracing_subscriber::prelude::*;
1716
use tracing_subscriber::EnvFilter;
1817

19-
static RESOURCE: Lazy<Resource> = Lazy::new(|| {
20-
Resource::builder()
21-
.with_service_name("basic-otlp-example-http")
22-
.build()
23-
});
18+
fn get_resource() -> Resource {
19+
static RESOURCE: OnceLock<Resource> = OnceLock::new();
20+
RESOURCE
21+
.get_or_init(|| {
22+
Resource::builder()
23+
.with_service_name("basic-otlp-example-grpc")
24+
.build()
25+
})
26+
.clone()
27+
}
2428

2529
fn init_logs() -> SdkLoggerProvider {
2630
let exporter = LogExporter::builder()
@@ -31,7 +35,7 @@ fn init_logs() -> SdkLoggerProvider {
3135

3236
SdkLoggerProvider::builder()
3337
.with_batch_exporter(exporter)
34-
.with_resource(RESOURCE.clone())
38+
.with_resource(get_resource())
3539
.build()
3640
}
3741

@@ -44,7 +48,7 @@ fn init_traces() -> SdkTracerProvider {
4448

4549
SdkTracerProvider::builder()
4650
.with_batch_exporter(exporter)
47-
.with_resource(RESOURCE.clone())
51+
.with_resource(get_resource())
4852
.build()
4953
}
5054

@@ -57,7 +61,7 @@ fn init_metrics() -> SdkMeterProvider {
5761

5862
SdkMeterProvider::builder()
5963
.with_periodic_exporter(exporter)
60-
.with_resource(RESOURCE.clone())
64+
.with_resource(get_resource())
6165
.build()
6266
}
6367

opentelemetry-otlp/examples/basic-otlp/Cargo.toml

-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ license = "Apache-2.0"
66
publish = false
77

88
[dependencies]
9-
once_cell = { workspace = true }
109
opentelemetry = { path = "../../../opentelemetry" }
1110
opentelemetry_sdk = { path = "../../../opentelemetry-sdk" }
1211
opentelemetry-otlp = { path = "../../../opentelemetry-otlp", features = ["grpc-tonic"] }

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

+14-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use once_cell::sync::Lazy;
21
use opentelemetry::trace::{TraceContextExt, Tracer};
32
use opentelemetry::KeyValue;
43
use opentelemetry::{global, InstrumentationScope};
@@ -9,23 +8,29 @@ use opentelemetry_sdk::metrics::SdkMeterProvider;
98
use opentelemetry_sdk::trace::SdkTracerProvider;
109
use opentelemetry_sdk::Resource;
1110
use std::error::Error;
11+
use std::sync::OnceLock;
1212
use tracing::info;
1313
use tracing_subscriber::prelude::*;
1414
use tracing_subscriber::EnvFilter;
1515

16-
static RESOURCE: Lazy<Resource> = Lazy::new(|| {
17-
Resource::builder()
18-
.with_service_name("basic-otlp-example-grpc")
19-
.build()
20-
});
16+
fn get_resource() -> Resource {
17+
static RESOURCE: OnceLock<Resource> = OnceLock::new();
18+
RESOURCE
19+
.get_or_init(|| {
20+
Resource::builder()
21+
.with_service_name("basic-otlp-example-grpc")
22+
.build()
23+
})
24+
.clone()
25+
}
2126

2227
fn init_traces() -> SdkTracerProvider {
2328
let exporter = SpanExporter::builder()
2429
.with_tonic()
2530
.build()
2631
.expect("Failed to create span exporter");
2732
SdkTracerProvider::builder()
28-
.with_resource(RESOURCE.clone())
33+
.with_resource(get_resource())
2934
.with_batch_exporter(exporter)
3035
.build()
3136
}
@@ -38,7 +43,7 @@ fn init_metrics() -> SdkMeterProvider {
3843

3944
SdkMeterProvider::builder()
4045
.with_periodic_exporter(exporter)
41-
.with_resource(RESOURCE.clone())
46+
.with_resource(get_resource())
4247
.build()
4348
}
4449

@@ -49,7 +54,7 @@ fn init_logs() -> SdkLoggerProvider {
4954
.expect("Failed to create log exporter");
5055

5156
SdkLoggerProvider::builder()
52-
.with_resource(RESOURCE.clone())
57+
.with_resource(get_resource())
5358
.with_batch_exporter(exporter)
5459
.build()
5560
}

0 commit comments

Comments
 (0)