Skip to content

Commit 1b49188

Browse files
committed
chore: change logs exporter to use ShutdownResult
1 parent dc5d9b1 commit 1b49188

File tree

11 files changed

+38
-15
lines changed

11 files changed

+38
-15
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::sync::Arc;
33
use async_trait::async_trait;
44
use http::{header::CONTENT_TYPE, Method};
55
use opentelemetry::otel_debug;
6-
use opentelemetry_sdk::export::logs::{LogBatch, LogExporter};
6+
use opentelemetry_sdk::export::logs::{LogBatch, LogExporter, ShutdownResult};
77
use opentelemetry_sdk::logs::{LogError, LogResult};
88

99
use super::OtlpHttpClient;
@@ -49,7 +49,7 @@ impl LogExporter for OtlpHttpClient {
4949
Ok(())
5050
}
5151

52-
fn shutdown(&mut self) -> LogResult<()> {
52+
fn shutdown(&mut self) -> ShutdownResult {
5353
let _ = self.client.lock()?.take();
5454
Ok(())
5555
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::sync::Arc;
33
use futures_core::future::BoxFuture;
44
use http::{header::CONTENT_TYPE, Method};
55
use opentelemetry::otel_debug;
6-
use opentelemetry::trace::{TraceError, TraceResult};
6+
use opentelemetry::trace::TraceError;
77
use opentelemetry_sdk::export::trace::{ExportResult, ShutdownResult, SpanData, SpanExporter};
88

99
use super::OtlpHttpClient;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use opentelemetry::otel_debug;
44
use opentelemetry_proto::tonic::collector::logs::v1::{
55
logs_service_client::LogsServiceClient, ExportLogsServiceRequest,
66
};
7-
use opentelemetry_sdk::export::logs::{LogBatch, LogExporter};
7+
use opentelemetry_sdk::export::logs::{LogBatch, LogExporter, ShutdownResult};
88
use opentelemetry_sdk::logs::{LogError, LogResult};
99
use tonic::{codegen::CompressionEncoding, service::Interceptor, transport::Channel, Request};
1010

@@ -89,7 +89,7 @@ impl LogExporter for TonicLogsClient {
8989
Ok(())
9090
}
9191

92-
fn shutdown(&mut self) -> LogResult<()> {
92+
fn shutdown(&mut self) -> ShutdownResult {
9393
let _ = self.inner.take();
9494
Ok(())
9595
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use core::fmt;
22

33
use futures_core::future::BoxFuture;
4-
use opentelemetry::trace::TraceResult;
54
use opentelemetry::{otel_debug, trace::TraceError};
65
use opentelemetry_proto::tonic::collector::trace::v1::{
76
trace_service_client::TraceServiceClient, ExportTraceServiceRequest,

opentelemetry-sdk/src/export/logs/mod.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! Log exporters
22
use crate::logs::LogRecord;
3-
use crate::logs::{LogError, LogResult};
3+
use crate::logs::{LogError, LogResult, ShutdownError};
44
use crate::Resource;
55
use async_trait::async_trait;
66
#[cfg(feature = "spec_unstable_logs_enabled")]
@@ -83,7 +83,7 @@ pub trait LogExporter: Send + Sync + Debug {
8383
///
8484
async fn export(&self, batch: LogBatch<'_>) -> LogResult<()>;
8585
/// Shuts down the exporter.
86-
fn shutdown(&mut self) -> LogResult<()> {
86+
fn shutdown(&mut self) -> ShutdownResult {
8787
Ok(())
8888
}
8989

@@ -99,3 +99,6 @@ pub trait LogExporter: Send + Sync + Debug {
9999

100100
/// Describes the result of an export.
101101
pub type ExportResult = Result<(), LogError>;
102+
103+
/// Describes the result of a shutdown in the log SDK.
104+
pub type ShutdownResult = Result<(), ShutdownError>;

opentelemetry-sdk/src/logs/error.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,22 @@ impl<T> From<PoisonError<T>> for LogError {
6161
#[derive(Error, Debug)]
6262
#[error("{0}")]
6363
struct Custom(String);
64+
65+
/// Errors returned during shutdown
66+
#[derive(Error, Debug)]
67+
#[non_exhaustive]
68+
pub enum ShutdownError {
69+
/// Mutex lock poisoning
70+
#[error("mutex lock poisioning for {0}")]
71+
MutexPoisoned(String),
72+
73+
/// Other errors propagated from log SDK that weren't covered above.
74+
#[error(transparent)]
75+
Other(#[from] Box<dyn std::error::Error + Send + Sync + 'static>),
76+
}
77+
78+
impl<T> From<PoisonError<T>> for ShutdownError {
79+
fn from(err: PoisonError<T>) -> Self {
80+
ShutdownError::Other(err.to_string().into())
81+
}
82+
}

opentelemetry-sdk/src/logs/log_processor.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,9 @@ impl<T: LogExporter> LogProcessor for SimpleLogProcessor<T> {
144144
self.is_shutdown
145145
.store(true, std::sync::atomic::Ordering::Relaxed);
146146
if let Ok(mut exporter) = self.exporter.lock() {
147-
exporter.shutdown()?;
147+
exporter
148+
.shutdown()
149+
.map_err(|e| LogError::Other(Box::new(e)))?;
148150
Ok(())
149151
} else {
150152
Err(LogError::MutexPoisoned("SimpleLogProcessor".into()))

opentelemetry-sdk/src/logs/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ mod log_emitter;
44
mod log_processor;
55
pub(crate) mod record;
66

7-
pub use error::{LogError, LogResult};
7+
pub use error::{LogError, LogResult, ShutdownError};
88
pub use log_emitter::{Builder, Logger, LoggerProvider};
99
pub use log_processor::{
1010
BatchConfig, BatchConfigBuilder, BatchLogProcessor, BatchLogProcessorBuilder, LogProcessor,

opentelemetry-sdk/src/testing/logs/in_memory_exporter.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::export::logs::{LogBatch, LogExporter};
2-
use crate::logs::LogRecord;
32
use crate::logs::{LogError, LogResult};
3+
use crate::logs::{LogRecord, ShutdownError};
44
use crate::Resource;
55
use async_trait::async_trait;
66
use opentelemetry::InstrumentationScope;
@@ -195,7 +195,7 @@ impl LogExporter for InMemoryLogExporter {
195195
Ok(())
196196
}
197197

198-
fn shutdown(&mut self) -> LogResult<()> {
198+
fn shutdown(&mut self) -> Result<(), ShutdownError> {
199199
if self.should_reset_on_shutdown {
200200
self.reset();
201201
}

opentelemetry-sdk/src/testing/trace/span_exporters.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use crate::{
66
use futures_util::future::BoxFuture;
77
pub use opentelemetry::testing::trace::TestSpan;
88
use opentelemetry::{
9-
trace::{SpanContext, SpanId, SpanKind, Status, TraceError, TraceFlags, TraceId, TraceState},
9+
trace::{SpanContext, SpanId, SpanKind, Status, TraceFlags, TraceId, TraceState},
1010
InstrumentationScope,
1111
};
1212
use std::fmt::{Display, Formatter};

0 commit comments

Comments
 (0)