Skip to content

Commit ebf1bb6

Browse files
lalitbcijothomas
andauthored
Move Logs and Metrics error constructs to SDK (#2266)
Co-authored-by: Cijo Thomas <[email protected]>
1 parent 31bea19 commit ebf1bb6

File tree

53 files changed

+233
-202
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+233
-202
lines changed

opentelemetry-appender-tracing/benches/logs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515

1616
use async_trait::async_trait;
1717
use criterion::{criterion_group, criterion_main, Criterion};
18-
use opentelemetry::logs::LogResult;
1918
use opentelemetry::{InstrumentationScope, KeyValue};
2019
use opentelemetry_appender_tracing::layer as tracing_layer;
2120
use opentelemetry_sdk::export::logs::{LogBatch, LogExporter};
21+
use opentelemetry_sdk::logs::LogResult;
2222
use opentelemetry_sdk::logs::{LogProcessor, LogRecord, LoggerProvider};
2323
use opentelemetry_sdk::Resource;
2424
use pprof::criterion::{Output, PProfProfiler};

opentelemetry-appender-tracing/src/layer.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,12 +210,12 @@ const fn severity_of_level(level: &Level) -> Severity {
210210
mod tests {
211211
use crate::layer;
212212
use async_trait::async_trait;
213-
use opentelemetry::logs::{LogResult, Severity};
213+
use opentelemetry::logs::Severity;
214214
use opentelemetry::trace::TracerProvider as _;
215215
use opentelemetry::trace::{TraceContextExt, TraceFlags, Tracer};
216216
use opentelemetry::{logs::AnyValue, Key};
217217
use opentelemetry_sdk::export::logs::{LogBatch, LogExporter};
218-
use opentelemetry_sdk::logs::{LogRecord, LoggerProvider};
218+
use opentelemetry_sdk::logs::{LogRecord, LogResult, LoggerProvider};
219219
use opentelemetry_sdk::testing::logs::InMemoryLogExporter;
220220
use opentelemetry_sdk::trace;
221221
use opentelemetry_sdk::trace::{Sampler, TracerProvider};

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
use once_cell::sync::Lazy;
33
use opentelemetry::{
44
global,
5-
metrics::MetricError,
65
trace::{TraceContextExt, TraceError, Tracer},
76
InstrumentationScope, KeyValue,
87
};
@@ -11,7 +10,7 @@ use opentelemetry_otlp::WithExportConfig;
1110
use opentelemetry_otlp::{LogExporter, MetricExporter, Protocol, SpanExporter};
1211
use opentelemetry_sdk::{
1312
logs::LoggerProvider,
14-
metrics::{PeriodicReader, SdkMeterProvider},
13+
metrics::{MetricError, PeriodicReader, SdkMeterProvider},
1514
runtime,
1615
trace::{self as sdktrace, Config, TracerProvider},
1716
};
@@ -31,7 +30,7 @@ static RESOURCE: Lazy<Resource> = Lazy::new(|| {
3130
)])
3231
});
3332

34-
fn init_logs() -> Result<sdklogs::LoggerProvider, opentelemetry::logs::LogError> {
33+
fn init_logs() -> Result<sdklogs::LoggerProvider, opentelemetry_sdk::logs::LogError> {
3534
let exporter = LogExporter::builder()
3635
.with_http()
3736
.with_endpoint("http://localhost:4318/v1/logs")

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
use once_cell::sync::Lazy;
2-
use opentelemetry::logs::LogError;
3-
use opentelemetry::metrics::MetricError;
42
use opentelemetry::trace::{TraceContextExt, TraceError, Tracer};
53
use opentelemetry::KeyValue;
64
use opentelemetry::{global, InstrumentationScope};
75
use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge;
86
use opentelemetry_otlp::{LogExporter, MetricExporter, SpanExporter, WithExportConfig};
7+
use opentelemetry_sdk::logs::LogError;
98
use opentelemetry_sdk::logs::LoggerProvider;
9+
use opentelemetry_sdk::metrics::MetricError;
1010
use opentelemetry_sdk::metrics::{PeriodicReader, SdkMeterProvider};
1111
use opentelemetry_sdk::trace::Config;
1212
use opentelemetry_sdk::{runtime, trace as sdktrace, Resource};

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ use std::sync::Arc;
22

33
use async_trait::async_trait;
44
use http::{header::CONTENT_TYPE, Method};
5-
use opentelemetry::logs::{LogError, LogResult};
65
use opentelemetry_sdk::export::logs::{LogBatch, LogExporter};
6+
use opentelemetry_sdk::logs::{LogError, LogResult};
77

88
use super::OtlpHttpClient;
99

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ use std::sync::Arc;
22

33
use async_trait::async_trait;
44
use http::{header::CONTENT_TYPE, Method};
5-
use opentelemetry::metrics::{MetricError, MetricResult};
65
use opentelemetry_sdk::metrics::data::ResourceMetrics;
6+
use opentelemetry_sdk::metrics::{MetricError, MetricResult};
77

88
use crate::{metric::MetricsClient, Error};
99

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ impl HttpExporterBuilder {
223223

224224
/// Create a log exporter with the current configuration
225225
#[cfg(feature = "logs")]
226-
pub fn build_log_exporter(mut self) -> opentelemetry::logs::LogResult<crate::LogExporter> {
226+
pub fn build_log_exporter(mut self) -> opentelemetry_sdk::logs::LogResult<crate::LogExporter> {
227227
use crate::{
228228
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT, OTEL_EXPORTER_OTLP_LOGS_HEADERS,
229229
OTEL_EXPORTER_OTLP_LOGS_TIMEOUT,
@@ -244,7 +244,7 @@ impl HttpExporterBuilder {
244244
pub fn build_metrics_exporter(
245245
mut self,
246246
temporality: opentelemetry_sdk::metrics::data::Temporality,
247-
) -> opentelemetry::metrics::MetricResult<crate::MetricExporter> {
247+
) -> opentelemetry_sdk::metrics::MetricResult<crate::MetricExporter> {
248248
use crate::{
249249
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT, OTEL_EXPORTER_OTLP_METRICS_HEADERS,
250250
OTEL_EXPORTER_OTLP_METRICS_TIMEOUT,
@@ -315,7 +315,7 @@ impl OtlpHttpClient {
315315
fn build_logs_export_body(
316316
&self,
317317
logs: LogBatch<'_>,
318-
) -> opentelemetry::logs::LogResult<(Vec<u8>, &'static str)> {
318+
) -> opentelemetry_sdk::logs::LogResult<(Vec<u8>, &'static str)> {
319319
use opentelemetry_proto::tonic::collector::logs::v1::ExportLogsServiceRequest;
320320
let resource_logs = group_logs_by_resource_and_scope(logs, &self.resource);
321321
let req = ExportLogsServiceRequest { resource_logs };
@@ -324,7 +324,7 @@ impl OtlpHttpClient {
324324
#[cfg(feature = "http-json")]
325325
Protocol::HttpJson => match serde_json::to_string_pretty(&req) {
326326
Ok(json) => Ok((json.into(), "application/json")),
327-
Err(e) => Err(opentelemetry::logs::LogError::from(e.to_string())),
327+
Err(e) => Err(opentelemetry_sdk::logs::LogError::from(e.to_string())),
328328
},
329329
_ => Ok((req.encode_to_vec(), "application/x-protobuf")),
330330
}
@@ -334,7 +334,7 @@ impl OtlpHttpClient {
334334
fn build_metrics_export_body(
335335
&self,
336336
metrics: &mut opentelemetry_sdk::metrics::data::ResourceMetrics,
337-
) -> opentelemetry::metrics::MetricResult<(Vec<u8>, &'static str)> {
337+
) -> opentelemetry_sdk::metrics::MetricResult<(Vec<u8>, &'static str)> {
338338
use opentelemetry_proto::tonic::collector::metrics::v1::ExportMetricsServiceRequest;
339339

340340
let req: ExportMetricsServiceRequest = (&*metrics).into();
@@ -343,7 +343,9 @@ impl OtlpHttpClient {
343343
#[cfg(feature = "http-json")]
344344
Protocol::HttpJson => match serde_json::to_string_pretty(&req) {
345345
Ok(json) => Ok((json.into(), "application/json")),
346-
Err(e) => Err(opentelemetry::metrics::MetricError::Other(e.to_string())),
346+
Err(e) => Err(opentelemetry_sdk::metrics::MetricError::Other(
347+
e.to_string(),
348+
)),
347349
},
348350
_ => Ok((req.encode_to_vec(), "application/x-protobuf")),
349351
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use async_trait::async_trait;
22
use core::fmt;
3-
use opentelemetry::logs::{LogError, LogResult};
43
use opentelemetry_proto::tonic::collector::logs::v1::{
54
logs_service_client::LogsServiceClient, ExportLogsServiceRequest,
65
};
76
use opentelemetry_sdk::export::logs::{LogBatch, LogExporter};
7+
use opentelemetry_sdk::logs::{LogError, LogResult};
88
use tonic::{codegen::CompressionEncoding, service::Interceptor, transport::Channel, Request};
99

1010
use opentelemetry_proto::transform::logs::tonic::group_logs_by_resource_and_scope;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ use core::fmt;
22
use std::sync::Mutex;
33

44
use async_trait::async_trait;
5-
use opentelemetry::metrics::{MetricError, MetricResult};
65
use opentelemetry_proto::tonic::collector::metrics::v1::{
76
metrics_service_client::MetricsServiceClient, ExportMetricsServiceRequest,
87
};
98
use opentelemetry_sdk::metrics::data::ResourceMetrics;
9+
use opentelemetry_sdk::metrics::{MetricError, MetricResult};
1010
use tonic::{codegen::CompressionEncoding, service::Interceptor, transport::Channel, Request};
1111

1212
use super::BoxInterceptor;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ impl TonicExporterBuilder {
254254
#[cfg(feature = "logs")]
255255
pub(crate) fn build_log_exporter(
256256
self,
257-
) -> Result<crate::logs::LogExporter, opentelemetry::logs::LogError> {
257+
) -> Result<crate::logs::LogExporter, opentelemetry_sdk::logs::LogError> {
258258
use crate::exporter::tonic::logs::TonicLogsClient;
259259

260260
let (channel, interceptor, compression) = self.build_channel(
@@ -274,7 +274,7 @@ impl TonicExporterBuilder {
274274
pub(crate) fn build_metrics_exporter(
275275
self,
276276
temporality: opentelemetry_sdk::metrics::data::Temporality,
277-
) -> opentelemetry::metrics::MetricResult<crate::MetricExporter> {
277+
) -> opentelemetry_sdk::metrics::MetricResult<crate::MetricExporter> {
278278
use crate::MetricExporter;
279279
use metrics::TonicMetricsClient;
280280

opentelemetry-otlp/src/lib.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,12 @@ impl ExportError for Error {
391391
}
392392
}
393393

394+
impl opentelemetry::trace::ExportError for Error {
395+
fn exporter_name(&self) -> &'static str {
396+
"otlp"
397+
}
398+
}
399+
394400
/// The communication protocol to use when exporting data.
395401
#[cfg_attr(feature = "serialize", derive(Deserialize, Serialize))]
396402
#[derive(Clone, Copy, Debug, Eq, PartialEq)]

opentelemetry-otlp/src/logs.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use async_trait::async_trait;
66
use std::fmt::Debug;
77

8-
use opentelemetry::logs::LogResult;
8+
use opentelemetry_sdk::logs::LogResult;
99

1010
use opentelemetry_sdk::export::logs::LogBatch;
1111

@@ -62,14 +62,14 @@ impl LogExporterBuilder<NoExporterBuilderSet> {
6262

6363
#[cfg(feature = "grpc-tonic")]
6464
impl LogExporterBuilder<TonicExporterBuilderSet> {
65-
pub fn build(self) -> Result<LogExporter, opentelemetry::logs::LogError> {
65+
pub fn build(self) -> Result<LogExporter, opentelemetry_sdk::logs::LogError> {
6666
self.client.0.build_log_exporter()
6767
}
6868
}
6969

7070
#[cfg(any(feature = "http-proto", feature = "http-json"))]
7171
impl LogExporterBuilder<HttpExporterBuilderSet> {
72-
pub fn build(self) -> Result<LogExporter, opentelemetry::logs::LogError> {
72+
pub fn build(self) -> Result<LogExporter, opentelemetry_sdk::logs::LogError> {
7373
self.client.0.build_log_exporter()
7474
}
7575
}

opentelemetry-otlp/src/metric.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use crate::NoExporterBuilderSet;
1616

1717
use async_trait::async_trait;
1818
use core::fmt;
19-
use opentelemetry::metrics::MetricResult;
19+
use opentelemetry_sdk::metrics::MetricResult;
2020

2121
use opentelemetry_sdk::metrics::{
2222
data::{ResourceMetrics, Temporality},

opentelemetry-otlp/tests/integration_test/tests/logs.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33
use integration_test_runner::logs_asserter::{read_logs_from_json, LogsAsserter};
44
use log::{info, Level};
5-
use opentelemetry::logs::LogError;
65
use opentelemetry::KeyValue;
76
use opentelemetry_appender_log::OpenTelemetryLogBridge;
87
use opentelemetry_otlp::LogExporter;
9-
use opentelemetry_sdk::logs::LoggerProvider;
8+
use opentelemetry_sdk::logs::{LogError, LoggerProvider};
109
use opentelemetry_sdk::{logs as sdklogs, runtime, Resource};
1110
use std::error::Error;
1211
use std::fs::File;

opentelemetry-sdk/CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,18 @@
3434
- Pin url version to `2.5.2`. The higher version breaks the build refer: [servo/rust-url#992.](https://github.com/servo/rust-url/issues/992)
3535
The `url` crate is used when `jaeger_remote_sampler` feature is enabled.
3636

37+
- **BREAKING**: [#2266](https://github.com/open-telemetry/opentelemetry-rust/pull/2266)
38+
- Moved `ExportError` trait from `opentelemetry::ExportError` to `opentelemetry_sdk::export::ExportError`
39+
- Moved `LogError` enum from `opentelemetry::logs::LogError` to `opentelemetry_sdk::logs::LogError`
40+
- Moved `LogResult` type alias from `opentelemetry::logs::LogResult` to `opentelemetry_sdk::logs::LogResult`
41+
- Renamed `opentelemetry::metrics::Result` type alias to `opentelemetry::metrics::MetricResult`
42+
- Renamed `opentelemetry::metrics::MetricsError` enum to `opentelemetry::metrics::MetricError`
43+
- Moved `MetricError` enum from `opentelemetry::metrics::MetricError` to `opentelemetry_sdk::metrics::MetricError`
44+
- Moved `MetricResult` type alias from `opentelemetry::metrics::MetricResult` to `opentelemetry_sdk::metrics::MetricResult`
45+
46+
- Users calling public APIs that return these constructs (e.g, LoggerProvider::shutdown(), MeterProvider::force_flush()) should now import them from the SDK instead of the API.
47+
- Developers creating custom exporters should ensure they import these constructs from the SDK, not the API.
48+
3749
## v0.26.0
3850
Released 2024-Sep-30
3951

opentelemetry-sdk/benches/log.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,11 @@ use std::time::SystemTime;
2020

2121
use criterion::{criterion_group, criterion_main, Criterion};
2222

23-
use opentelemetry::logs::{
24-
AnyValue, LogRecord as _, LogResult, Logger as _, LoggerProvider as _, Severity,
25-
};
23+
use opentelemetry::logs::{AnyValue, LogRecord as _, Logger as _, LoggerProvider as _, Severity};
2624
use opentelemetry::trace::Tracer;
2725
use opentelemetry::trace::TracerProvider as _;
2826
use opentelemetry::{InstrumentationScope, Key};
29-
use opentelemetry_sdk::logs::{LogProcessor, LogRecord, Logger, LoggerProvider};
27+
use opentelemetry_sdk::logs::{LogProcessor, LogRecord, LogResult, Logger, LoggerProvider};
3028
use opentelemetry_sdk::trace;
3129
use opentelemetry_sdk::trace::{Sampler, TracerProvider};
3230

opentelemetry-sdk/benches/log_exporter.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ use std::time::SystemTime;
1616
use async_trait::async_trait;
1717
use criterion::{criterion_group, criterion_main, Criterion};
1818

19-
use opentelemetry::logs::{LogRecord as _, LogResult, Logger as _, LoggerProvider as _, Severity};
19+
use opentelemetry::logs::{LogRecord as _, Logger as _, LoggerProvider as _, Severity};
20+
use opentelemetry_sdk::logs::LogResult;
2021

2122
use opentelemetry::InstrumentationScope;
2223
use opentelemetry_sdk::export::logs::LogBatch;

opentelemetry-sdk/benches/log_processor.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ use std::{
1919

2020
use criterion::{criterion_group, criterion_main, Criterion};
2121
use opentelemetry::{
22-
logs::{LogRecord as _, LogResult, Logger as _, LoggerProvider as _, Severity},
22+
logs::{LogRecord as _, Logger as _, LoggerProvider as _, Severity},
2323
InstrumentationScope,
2424
};
25-
use opentelemetry_sdk::logs::{LogProcessor, LogRecord, Logger, LoggerProvider};
25+
use opentelemetry_sdk::logs::{LogProcessor, LogRecord, LogResult, Logger, LoggerProvider};
2626

2727
// Run this benchmark with:
2828
// cargo bench --bench log_processor

opentelemetry-sdk/benches/metric.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@ use std::sync::{Arc, Weak};
33

44
use criterion::{criterion_group, criterion_main, Bencher, Criterion};
55
use opentelemetry::{
6-
metrics::{Counter, Histogram, MeterProvider as _, MetricResult},
6+
metrics::{Counter, Histogram, MeterProvider as _},
77
Key, KeyValue,
88
};
99
use opentelemetry_sdk::{
1010
metrics::{
1111
data::{ResourceMetrics, Temporality},
1212
new_view,
1313
reader::MetricReader,
14-
Aggregation, Instrument, InstrumentKind, ManualReader, Pipeline, SdkMeterProvider, Stream,
15-
View,
14+
Aggregation, Instrument, InstrumentKind, ManualReader, MetricResult, Pipeline,
15+
SdkMeterProvider, Stream, View,
1616
},
1717
Resource,
1818
};

opentelemetry/src/global/error_handler.rs renamed to opentelemetry-sdk/src/error.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1+
//! Wrapper for error from trace, logs and metrics part of open telemetry.
12
use std::sync::PoisonError;
23

34
#[cfg(feature = "logs")]
45
use crate::logs::LogError;
56
#[cfg(feature = "metrics")]
67
use crate::metrics::MetricError;
7-
use crate::propagation::PropagationError;
8+
use opentelemetry::propagation::PropagationError;
89
#[cfg(feature = "trace")]
9-
use crate::trace::TraceError;
10+
use opentelemetry::trace::TraceError;
1011

1112
/// Wrapper for error from both tracing and metrics part of open telemetry.
1213
#[derive(thiserror::Error, Debug)]

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
//! Log exporters
22
use crate::logs::LogRecord;
3+
use crate::logs::{LogError, LogResult};
34
use crate::Resource;
45
use async_trait::async_trait;
56
#[cfg(feature = "logs_level_enabled")]
67
use opentelemetry::logs::Severity;
7-
use opentelemetry::logs::{LogError, LogResult};
88
use opentelemetry::InstrumentationScope;
99
use std::fmt::Debug;
1010

opentelemetry-sdk/src/export/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,8 @@ pub mod logs;
88
#[cfg_attr(docsrs, doc(cfg(feature = "trace")))]
99
pub mod trace;
1010

11-
pub use opentelemetry::ExportError;
11+
/// Trait for errors returned by exporters
12+
pub trait ExportError: std::error::Error + Send + Sync + 'static {
13+
/// The name of exporter that returned this error
14+
fn exporter_name(&self) -> &'static str;
15+
}

opentelemetry-sdk/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,3 +148,5 @@ pub mod util;
148148

149149
#[doc(inline)]
150150
pub use resource::Resource;
151+
152+
pub mod error;

0 commit comments

Comments
 (0)