Skip to content

Commit 37efb88

Browse files
gruebelcijothomas
andauthored
move TraceError, TraceResult and ExportError to opentelemetry-sdk (#2680)
Co-authored-by: Cijo Thomas <[email protected]>
1 parent f01e8f4 commit 37efb88

File tree

17 files changed

+101
-111
lines changed

17 files changed

+101
-111
lines changed

examples/tracing-jaeger/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
use opentelemetry::{
22
global,
3-
trace::{TraceContextExt, TraceError, Tracer},
3+
trace::{TraceContextExt, Tracer},
44
KeyValue,
55
};
6-
use opentelemetry_sdk::trace::SdkTracerProvider;
6+
use opentelemetry_sdk::trace::{SdkTracerProvider, TraceError};
77
use opentelemetry_sdk::Resource;
88

99
use std::error::Error;

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ impl HttpExporterBuilder {
210210
#[cfg(feature = "trace")]
211211
pub fn build_span_exporter(
212212
mut self,
213-
) -> Result<crate::SpanExporter, opentelemetry::trace::TraceError> {
213+
) -> Result<crate::SpanExporter, opentelemetry_sdk::trace::TraceError> {
214214
use crate::{
215215
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT, OTEL_EXPORTER_OTLP_TRACES_HEADERS,
216216
OTEL_EXPORTER_OTLP_TRACES_TIMEOUT,
@@ -301,7 +301,7 @@ impl OtlpHttpClient {
301301
fn build_trace_export_body(
302302
&self,
303303
spans: Vec<SpanData>,
304-
) -> opentelemetry::trace::TraceResult<(Vec<u8>, &'static str)> {
304+
) -> opentelemetry_sdk::trace::TraceResult<(Vec<u8>, &'static str)> {
305305
use opentelemetry_proto::tonic::collector::trace::v1::ExportTraceServiceRequest;
306306
let resource_spans = group_spans_by_resource_and_scope(spans, &self.resource);
307307

@@ -310,7 +310,7 @@ impl OtlpHttpClient {
310310
#[cfg(feature = "http-json")]
311311
Protocol::HttpJson => match serde_json::to_string_pretty(&req) {
312312
Ok(json) => Ok((json.into(), "application/json")),
313-
Err(e) => Err(opentelemetry::trace::TraceError::from(e.to_string())),
313+
Err(e) => Err(opentelemetry_sdk::trace::TraceError::from(e.to_string())),
314314
},
315315
_ => Ok((req.encode_to_vec(), "application/x-protobuf")),
316316
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ impl TonicExporterBuilder {
303303
#[cfg(feature = "trace")]
304304
pub(crate) fn build_span_exporter(
305305
self,
306-
) -> Result<crate::SpanExporter, opentelemetry::trace::TraceError> {
306+
) -> Result<crate::SpanExporter, opentelemetry_sdk::trace::TraceError> {
307307
use crate::exporter::tonic::trace::TonicTracesClient;
308308

309309
otel_debug!(name: "TracesTonicChannelBuilding");

opentelemetry-otlp/src/lib.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -384,12 +384,6 @@ impl ExportError for Error {
384384
}
385385
}
386386

387-
impl opentelemetry::trace::ExportError for Error {
388-
fn exporter_name(&self) -> &'static str {
389-
"otlp"
390-
}
391-
}
392-
393387
/// The communication protocol to use when exporting data.
394388
#[cfg_attr(feature = "serialize", derive(Deserialize, Serialize))]
395389
#[derive(Clone, Copy, Debug, Eq, PartialEq)]

opentelemetry-otlp/src/span.rs

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

77
use opentelemetry_sdk::error::OTelSdkResult;
8-
use opentelemetry_sdk::trace::SpanData;
8+
use opentelemetry_sdk::trace::{SpanData, TraceError};
99

1010
#[cfg(feature = "grpc-tonic")]
1111
use crate::{
@@ -62,7 +62,7 @@ impl SpanExporterBuilder<NoExporterBuilderSet> {
6262

6363
#[cfg(feature = "grpc-tonic")]
6464
impl SpanExporterBuilder<TonicExporterBuilderSet> {
65-
pub fn build(self) -> Result<SpanExporter, opentelemetry::trace::TraceError> {
65+
pub fn build(self) -> Result<SpanExporter, TraceError> {
6666
let span_exporter = self.client.0.build_span_exporter()?;
6767
opentelemetry::otel_debug!(name: "SpanExporterBuilt");
6868
Ok(span_exporter)
@@ -71,7 +71,7 @@ impl SpanExporterBuilder<TonicExporterBuilderSet> {
7171

7272
#[cfg(any(feature = "http-proto", feature = "http-json"))]
7373
impl SpanExporterBuilder<HttpExporterBuilderSet> {
74-
pub fn build(self) -> Result<SpanExporter, opentelemetry::trace::TraceError> {
74+
pub fn build(self) -> Result<SpanExporter, TraceError> {
7575
let span_exporter = self.client.0.build_span_exporter()?;
7676
Ok(span_exporter)
7777
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@
33
use std::{fs::File, os::unix::fs::MetadataExt};
44

55
use integration_test_runner::trace_asserter::{read_spans_from_json, TraceAsserter};
6-
use opentelemetry::trace::TraceError;
76
use opentelemetry_otlp::SpanExporter;
87

98
use anyhow::Result;
109
use ctor::dtor;
1110
use integration_test_runner::test_utils;
1211
use opentelemetry_sdk::{trace as sdktrace, Resource};
1312

14-
fn init_tracer_provider() -> Result<sdktrace::SdkTracerProvider, TraceError> {
13+
fn init_tracer_provider() -> Result<sdktrace::SdkTracerProvider, sdktrace::TraceError> {
1514
let exporter_builder = SpanExporter::builder();
1615
#[cfg(feature = "tonic-client")]
1716
let exporter_builder = exporter_builder.with_tonic();

opentelemetry-sdk/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
- Calls to `MeterProviderBuilder::with_resource`, `TracerProviderBuilder::with_resource`,
66
`LoggerProviderBuilder::with_resource` are now additive ([#2677](https://github.com/open-telemetry/opentelemetry-rust/pull/2677)).
77
- *Breaking*: Make `force_flush()` in `PushMetricExporter` synchronous
8+
- Moved `ExportError` trait from `opentelemetry::trace::ExportError` to `opentelemetry_sdk::export::ExportError`
9+
- Moved `TraceError` enum from `opentelemetry::trace::TraceError` to `opentelemetry_sdk::trace::TraceError`
10+
- Moved `TraceResult` type alias from `opentelemetry::trace::TraceResult` to `opentelemetry_sdk::trace::TraceResult`
811

912
## 0.28.0
1013

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use crate::error::{OTelSdkError, OTelSdkResult};
22
use crate::{
33
trace::{SpanData, SpanExporter},
44
trace::{SpanEvents, SpanLinks},
5+
ExportError,
56
};
67
pub use opentelemetry::testing::trace::TestSpan;
78
use opentelemetry::{
@@ -74,7 +75,7 @@ pub struct TestExportError(String);
7475

7576
impl std::error::Error for TestExportError {}
7677

77-
impl opentelemetry::trace::ExportError for TestExportError {
78+
impl ExportError for TestExportError {
7879
fn exporter_name(&self) -> &'static str {
7980
"test"
8081
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
use crate::ExportError;
2+
use std::sync::PoisonError;
3+
use std::time;
4+
use thiserror::Error;
5+
6+
/// A specialized `Result` type for trace operations.
7+
pub type TraceResult<T> = Result<T, TraceError>;
8+
9+
/// Errors returned by the trace API.
10+
#[derive(Error, Debug)]
11+
#[non_exhaustive]
12+
pub enum TraceError {
13+
/// Export failed with the error returned by the exporter
14+
#[error("Exporter {0} encountered the following error(s): {name}", name = .0.exporter_name())]
15+
ExportFailed(Box<dyn ExportError>),
16+
17+
/// Export failed to finish after certain period and processor stopped the export.
18+
#[error("Exporting timed out after {} seconds", .0.as_secs())]
19+
ExportTimedOut(time::Duration),
20+
21+
/// already shutdown error
22+
#[error("TracerProvider already shutdown")]
23+
TracerProviderAlreadyShutdown,
24+
25+
/// Other errors propagated from trace SDK that weren't covered above
26+
#[error(transparent)]
27+
Other(#[from] Box<dyn std::error::Error + Send + Sync + 'static>),
28+
}
29+
30+
impl<T> From<T> for TraceError
31+
where
32+
T: ExportError,
33+
{
34+
fn from(err: T) -> Self {
35+
TraceError::ExportFailed(Box::new(err))
36+
}
37+
}
38+
39+
impl From<String> for TraceError {
40+
fn from(err_msg: String) -> Self {
41+
TraceError::Other(err_msg.into())
42+
}
43+
}
44+
45+
impl From<&'static str> for TraceError {
46+
fn from(err_msg: &'static str) -> Self {
47+
TraceError::Other(Box::new(Custom(err_msg.into())))
48+
}
49+
}
50+
51+
impl<T> From<PoisonError<T>> for TraceError {
52+
fn from(err: PoisonError<T>) -> Self {
53+
TraceError::Other(err.to_string().into())
54+
}
55+
}
56+
57+
/// Wrap type for string
58+
#[derive(Error, Debug)]
59+
#[error("{0}")]
60+
struct Custom(String);

opentelemetry-sdk/src/trace/in_memory_exporter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::error::{OTelSdkError, OTelSdkResult};
22
use crate::resource::Resource;
3+
use crate::trace::error::{TraceError, TraceResult};
34
use crate::trace::{SpanData, SpanExporter};
4-
use opentelemetry::trace::{TraceError, TraceResult};
55
use std::sync::{Arc, Mutex};
66

77
/// An in-memory span exporter that stores span data in memory.

0 commit comments

Comments
 (0)