Skip to content

Commit 7495914

Browse files
committed
Chore: use shutdown result type in LogExporter trait
1 parent 8c5daa2 commit 7495914

File tree

7 files changed

+37
-10
lines changed

7 files changed

+37
-10
lines changed

opentelemetry-otlp/src/exporter/http/logs.rs

+7-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use std::sync::Arc;
22

33
use http::{header::CONTENT_TYPE, Method};
44
use opentelemetry::otel_debug;
5+
use opentelemetry_sdk::error::{ShutdownError, ShutdownResult};
56
use opentelemetry_sdk::logs::{LogBatch, LogExporter};
67
use opentelemetry_sdk::logs::{LogError, LogResult};
78

@@ -53,8 +54,12 @@ impl LogExporter for OtlpHttpClient {
5354
}
5455
}
5556

56-
fn shutdown(&mut self) {
57-
let _ = self.client.lock().map(|mut c| c.take());
57+
fn shutdown(&mut self) -> ShutdownResult {
58+
self.client
59+
.lock()
60+
.map_err(|e| ShutdownError::InternalFailure(format!("Failed to acquire lock: {}", e)))?
61+
.take();
62+
Ok(())
5863
}
5964

6065
fn set_resource(&mut self, resource: &opentelemetry_sdk::Resource) {

opentelemetry-otlp/src/exporter/tonic/logs.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use opentelemetry::otel_debug;
33
use opentelemetry_proto::tonic::collector::logs::v1::{
44
logs_service_client::LogsServiceClient, ExportLogsServiceRequest,
55
};
6+
use opentelemetry_sdk::error::ShutdownError;
67
use opentelemetry_sdk::logs::{LogBatch, LogExporter};
78
use opentelemetry_sdk::logs::{LogError, LogResult};
89
use tonic::{codegen::CompressionEncoding, service::Interceptor, transport::Channel, Request};
@@ -92,8 +93,9 @@ impl LogExporter for TonicLogsClient {
9293
}
9394
}
9495

95-
fn shutdown(&mut self) {
96+
fn shutdown(&mut self) -> Result<(), ShutdownError> {
9697
let _ = self.inner.take();
98+
Ok(())
9799
}
98100

99101
fn set_resource(&mut self, resource: &opentelemetry_sdk::Resource) {

opentelemetry-sdk/src/logs/export.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
//! Log exporters
2+
use crate::error::ShutdownResult;
23
use crate::logs::LogRecord;
34
use crate::logs::{LogError, LogResult};
45
use crate::Resource;
@@ -136,7 +137,9 @@ pub trait LogExporter: Send + Sync + Debug {
136137
) -> impl std::future::Future<Output = LogResult<()>> + Send;
137138

138139
/// Shuts down the exporter.
139-
fn shutdown(&mut self) {}
140+
fn shutdown(&mut self) -> ShutdownResult {
141+
Ok(())
142+
}
140143
#[cfg(feature = "spec_unstable_logs_enabled")]
141144
/// Chek if logs are enabled.
142145
fn event_enabled(&self, _level: Severity, _target: &str, _name: &str) -> bool {

opentelemetry-sdk/src/logs/in_memory_exporter.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use crate::error::ShutdownResult;
12
use crate::logs::LogRecord;
23
use crate::logs::{LogBatch, LogError, LogExporter, LogResult};
34
use crate::Resource;
@@ -198,10 +199,11 @@ impl LogExporter for InMemoryLogExporter {
198199
}
199200
}
200201

201-
fn shutdown(&mut self) {
202+
fn shutdown(&mut self) -> ShutdownResult {
202203
if self.should_reset_on_shutdown {
203204
self.reset();
204205
}
206+
Ok(())
205207
}
206208

207209
fn set_resource(&mut self, resource: &Resource) {

opentelemetry-sdk/src/logs/log_processor.rs

+7-2
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,9 @@ impl<T: LogExporter> LogProcessor for SimpleLogProcessor<T> {
190190
self.is_shutdown
191191
.store(true, std::sync::atomic::Ordering::Relaxed);
192192
if let Ok(mut exporter) = self.exporter.lock() {
193-
exporter.shutdown();
193+
exporter
194+
.shutdown()
195+
.map_err(|e| LogError::Other(Box::new(e)))?;
194196
Ok(())
195197
} else {
196198
Err(LogError::MutexPoisoned("SimpleLogProcessor".into()))
@@ -860,6 +862,7 @@ mod tests {
860862
BatchLogProcessor, OTEL_BLRP_EXPORT_TIMEOUT, OTEL_BLRP_MAX_EXPORT_BATCH_SIZE,
861863
OTEL_BLRP_MAX_QUEUE_SIZE, OTEL_BLRP_SCHEDULE_DELAY,
862864
};
865+
use crate::error::ShutdownResult;
863866
use crate::logs::LogResult;
864867
use crate::logs::{LogBatch, LogExporter, LogRecord};
865868
use crate::{
@@ -896,7 +899,9 @@ mod tests {
896899
async { Ok(()) }
897900
}
898901

899-
fn shutdown(&mut self) {}
902+
fn shutdown(&mut self) -> ShutdownResult {
903+
Ok(())
904+
}
900905

901906
fn set_resource(&mut self, resource: &Resource) {
902907
self.resource

opentelemetry-sdk/src/logs/log_processor_with_async_runtime.rs

+10-2
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,12 @@ impl<R: RuntimeChannel> BatchLogProcessor<R> {
187187
)
188188
.await;
189189

190-
exporter.shutdown();
190+
if let Err(e) = exporter.shutdown() {
191+
otel_debug!(
192+
name: "BatchLogProcessor.Shutdown.ExporterShutdownError",
193+
error = format!("{:?}", e),
194+
);
195+
}
191196

192197
if let Err(send_error) = ch.send(result) {
193198
otel_debug!(
@@ -281,6 +286,7 @@ where
281286

282287
#[cfg(all(test, feature = "testing", feature = "logs"))]
283288
mod tests {
289+
use crate::error::ShutdownResult;
284290
use crate::logs::log_processor::{
285291
OTEL_BLRP_EXPORT_TIMEOUT, OTEL_BLRP_MAX_EXPORT_BATCH_SIZE, OTEL_BLRP_MAX_QUEUE_SIZE,
286292
OTEL_BLRP_SCHEDULE_DELAY,
@@ -324,7 +330,9 @@ mod tests {
324330
async { Ok(()) }
325331
}
326332

327-
fn shutdown(&mut self) {}
333+
fn shutdown(&mut self) -> ShutdownResult {
334+
Ok(())
335+
}
328336

329337
fn set_resource(&mut self, resource: &Resource) {
330338
self.resource

opentelemetry-stdout/src/logs/exporter.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use chrono::{DateTime, Utc};
22
use core::fmt;
3+
use opentelemetry_sdk::error::ShutdownResult;
34
use opentelemetry_sdk::logs::LogBatch;
45
use opentelemetry_sdk::logs::LogResult;
56
use opentelemetry_sdk::Resource;
@@ -63,8 +64,9 @@ impl opentelemetry_sdk::logs::LogExporter for LogExporter {
6364
}
6465
}
6566

66-
fn shutdown(&mut self) {
67+
fn shutdown(&mut self) -> ShutdownResult {
6768
self.is_shutdown.store(true, atomic::Ordering::SeqCst);
69+
Ok(())
6870
}
6971

7072
fn set_resource(&mut self, res: &opentelemetry_sdk::Resource) {

0 commit comments

Comments
 (0)