Skip to content

Commit 179c2ab

Browse files
committed
⬆️ Bump version to 0.4.4
- ProviderSet shutdown
1 parent 16c2872 commit 179c2ab

File tree

3 files changed

+25
-8
lines changed

3 files changed

+25
-8
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pragma-common"
3-
version = "0.4.3"
3+
version = "0.4.4"
44
edition = "2021"
55
rust-version = "1.81"
66
categories = ["finance", "api-bindings"]

src/telemetry/mod.rs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use opentelemetry::trace::TracerProvider;
1+
use opentelemetry::trace::TracerProvider as _;
22
use opentelemetry::{global, KeyValue};
33
use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge;
44
use opentelemetry_otlp::WithExportConfig;
@@ -7,7 +7,7 @@ use opentelemetry_sdk::metrics::reader::DefaultTemporalitySelector;
77
use opentelemetry_sdk::metrics::{MeterProviderBuilder, PeriodicReader, SdkMeterProvider};
88
use opentelemetry_sdk::{runtime, trace::BatchConfigBuilder};
99
use opentelemetry_sdk::{
10-
trace::{Config, Tracer},
10+
trace::{Config, TracerProvider},
1111
Resource,
1212
};
1313
use opentelemetry_semantic_conventions::resource::SERVICE_NAME;
@@ -31,11 +31,26 @@ pub enum TelemetryError {
3131
}
3232

3333
pub struct ProviderSet {
34-
pub tracer_provider: Option<Tracer>,
34+
pub tracer_provider: Option<TracerProvider>,
3535
pub logger_provider: Option<LoggerProvider>,
3636
pub metrics_provider: Option<SdkMeterProvider>,
3737
}
3838

39+
impl ProviderSet {
40+
pub fn shutdown(&mut self) -> Result<(), TelemetryError> {
41+
if let Some(tracer_provider) = self.tracer_provider.take() {
42+
tracer_provider.shutdown()?;
43+
}
44+
if let Some(logger_provider) = self.logger_provider.take() {
45+
logger_provider.shutdown()?;
46+
}
47+
if let Some(metrics_provider) = self.metrics_provider.take() {
48+
metrics_provider.shutdown()?;
49+
}
50+
Ok(())
51+
}
52+
}
53+
3954
pub fn init_telemetry(
4055
app_name: &str,
4156
collection_endpoint: Option<String>,
@@ -53,7 +68,9 @@ pub fn init_telemetry(
5368

5469
tracing_subscriber
5570
.with(tracing_subscriber::fmt::layer())
56-
.with(OpenTelemetryLayer::new(tracer_provider.clone()))
71+
.with(OpenTelemetryLayer::new(
72+
tracer_provider.tracer(format!("{app_name}-subscriber")),
73+
))
5774
.with(OpenTelemetryTracingBridge::new(&logger_provider))
5875
.try_init()?;
5976

@@ -85,7 +102,7 @@ pub fn init_telemetry(
85102
}
86103
}
87104

88-
fn init_tracer_provider(app_name: &str, collection_endpoint: &str) -> Tracer {
105+
fn init_tracer_provider(app_name: &str, collection_endpoint: &str) -> TracerProvider {
89106
// Set a custom error handler to log OpenTelemetry errors with timestamps
90107
global::set_error_handler(|error| {
91108
tracing::error!(error = %error, "OpenTelemetry error occurred");
@@ -114,7 +131,7 @@ fn init_tracer_provider(app_name: &str, collection_endpoint: &str) -> Tracer {
114131
.expect("Failed to install tracer provider");
115132

116133
global::set_tracer_provider(provider.clone());
117-
provider.tracer(format!("{app_name}-subscriber"))
134+
provider
118135
}
119136

120137
fn init_logs_provider(

0 commit comments

Comments
 (0)