From 5aeeb22728759dd1f444e3911023ffa338fc80d3 Mon Sep 17 00:00:00 2001 From: "zhongyang.wu" Date: Sun, 29 Nov 2020 18:47:03 -0500 Subject: [PATCH] fix: clean the remaining std::error::Error --- CONTRIBUTING.md | 2 +- opentelemetry-jaeger/src/lib.rs | 37 +++++++++++++-------------------- opentelemetry-zipkin/src/lib.rs | 4 ++-- 3 files changed, 18 insertions(+), 25 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6fc6e4144a..d63c98f1d3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -96,7 +96,7 @@ https://github.com/open-telemetry/opentelemetry-specification/issues/165 ### Error Handling Currently, the Opentelemetry Rust SDK has two ways to handle errors. In the situation where errors are not allowed to return. One should call global error handler to process the errors. Otherwise, one should return the errors. -The Opentelemetry Rust SDK comes with an error type `openetelemetry::Error`. For different function, one error has been defined. All error returned by trace module MUST be wrapped in `opentelemetry::api::trace::TraceError`. All errors returned by metrics module MUST be wrapped in `opentelemetry::api::trace::MetricsError`. +The Opentelemetry Rust SDK comes with an error type `openetelemetry::Error`. For different function, one error has been defined. All error returned by trace module MUST be wrapped in `opentelemetry::trace::TraceError`. All errors returned by metrics module MUST be wrapped in `opentelemetry::metrics::MetricsError`. For users that want to implement their own exporters. It's RECOMMENDED to wrap all errors from the exporter into a crate-level error type, and implement `ExporterError` trait. diff --git a/opentelemetry-jaeger/src/lib.rs b/opentelemetry-jaeger/src/lib.rs index 25209fa6cf..4f8b3198b3 100644 --- a/opentelemetry-jaeger/src/lib.rs +++ b/opentelemetry-jaeger/src/lib.rs @@ -22,7 +22,7 @@ //! ```no_run //! use opentelemetry::trace::Tracer; //! -//! fn main() -> Result<(), Box> { +//! fn main() -> Result<(), opentelemetry::trace::TraceError> { //! let (tracer, _uninstall) = opentelemetry_jaeger::new_pipeline().install()?; //! //! tracer.in_span("doing_work", |cx| { @@ -59,9 +59,9 @@ //! [jaeger variables spec]: https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/sdk-environment-variables.md#jaeger-exporter //! //! ```no_run -//! use opentelemetry::trace::Tracer; +//! use opentelemetry::trace::{Tracer, TraceError}; //! -//! fn main() -> Result<(), Box> { +//! fn main() -> Result<(), TraceError> { //! // export OTEL_SERVICE_NAME=my-service-name //! let (tracer, _uninstall) = opentelemetry_jaeger::new_pipeline().from_env().install()?; //! @@ -90,9 +90,9 @@ //! //! ```ignore //! // Note that this requires the `collector_client` feature. -//! use opentelemetry::trace::Tracer; +//! use opentelemetry::trace::{Tracer, TraceError}; //! -//! fn main() -> Result<(), Box> { +//! fn main() -> Result<(), TraceError> { //! let (tracer, _uninstall) = opentelemetry_jaeger::new_pipeline() //! .with_collector_endpoint("http://localhost:14268/api/traces") //! // optionally set username and password as well. @@ -116,10 +116,10 @@ //! [`PipelineBuilder`]: struct.PipelineBuilder.html //! //! ```no_run -//! use opentelemetry::{KeyValue, trace::Tracer}; +//! use opentelemetry::{KeyValue, trace::{Tracer, TraceError}}; //! use opentelemetry::sdk::{trace::{self, IdGenerator, Sampler}, Resource}; //! -//! fn main() -> Result<(), Box> { +//! fn main() -> Result<(), TraceError> { //! let (tracer, _uninstall) = opentelemetry_jaeger::new_pipeline() //! .from_env() //! .with_agent_endpoint("localhost:6831") @@ -444,9 +444,7 @@ impl PipelineBuilder { /// Initialize a new exporter. /// /// This is useful if you are manually constructing a pipeline. - pub fn init_exporter( - self, - ) -> Result> { + pub fn init_exporter(self) -> Result { let export_instrumentation_lib = self.export_instrument_library; let (process, uploader) = self.init_uploader()?; @@ -458,30 +456,25 @@ impl PipelineBuilder { } #[cfg(not(any(feature = "collector_client", feature = "wasm_collector_client")))] - fn init_uploader( - self, - ) -> Result<(Process, BatchUploader), Box> { - let agent = AgentAsyncClientUDP::new(self.agent_endpoint.as_slice())?; + fn init_uploader(self) -> Result<(Process, BatchUploader), TraceError> { + let agent = AgentAsyncClientUDP::new(self.agent_endpoint.as_slice()) + .map_err::(Into::into)?; Ok((self.process, BatchUploader::Agent(agent))) } #[cfg(any(feature = "collector_client", feature = "wasm_collector_client"))] - fn init_uploader( - self, - ) -> Result< - (Process, uploader::BatchUploader), - Box, - > { + fn init_uploader(self) -> Result<(Process, uploader::BatchUploader), TraceError> { if let Some(collector_endpoint) = self.collector_endpoint { let collector = CollectorAsyncClientHttp::new( collector_endpoint, self.collector_username, self.collector_password, - )?; + ) + .map_err::(Into::into)?; Ok((self.process, uploader::BatchUploader::Collector(collector))) } else { let endpoint = self.agent_endpoint.as_slice(); - let agent = AgentAsyncClientUDP::new(endpoint)?; + let agent = AgentAsyncClientUDP::new(endpoint).map_err::(Into::into)?; Ok((self.process, BatchUploader::Agent(agent))) } } diff --git a/opentelemetry-zipkin/src/lib.rs b/opentelemetry-zipkin/src/lib.rs index 0459ee450d..dda11342a9 100644 --- a/opentelemetry-zipkin/src/lib.rs +++ b/opentelemetry-zipkin/src/lib.rs @@ -21,9 +21,9 @@ //! telemetry: //! //! ```no_run -//! use opentelemetry::trace::Tracer; +//! use opentelemetry::trace::{Tracer, TraceError}; //! -//! fn main() -> Result<(), Box> { +//! fn main() -> Result<(), TraceError> { //! let (tracer, _uninstall) = opentelemetry_zipkin::new_pipeline().install()?; //! //! tracer.in_span("doing_work", |cx| {