diff --git a/examples/tracing-grpc/Cargo.toml b/examples/tracing-grpc/Cargo.toml index 6bc624e293..3b18c44c7a 100644 --- a/examples/tracing-grpc/Cargo.toml +++ b/examples/tracing-grpc/Cargo.toml @@ -16,11 +16,11 @@ http = "0.2" tonic = "0.4" prost = "0.7" tokio = { version = "1.0", features = ["full"] } -opentelemetry = "0.12" -opentelemetry-jaeger = "0.11" +opentelemetry = { version = "0.14", features = ["rt-tokio"] } +opentelemetry-jaeger = "0.13" tracing = "0.1" tracing-subscriber = "0.2" -tracing-opentelemetry = "0.11" +tracing-opentelemetry = "0.13" tracing-futures = "0.2" [build-dependencies] diff --git a/examples/tracing-grpc/src/client.rs b/examples/tracing-grpc/src/client.rs index 8a2cfa60e8..5c522be91c 100644 --- a/examples/tracing-grpc/src/client.rs +++ b/examples/tracing-grpc/src/client.rs @@ -53,9 +53,9 @@ async fn greet() -> Result<(), Box Result<(), Box> { global::set_text_map_propagator(TraceContextPropagator::new()); - let (tracer, _uninstall) = opentelemetry_jaeger::new_pipeline() + let tracer = opentelemetry_jaeger::new_pipeline() .with_service_name("grpc-client") - .install()?; + .install_simple()?; tracing_subscriber::registry() .with(tracing_subscriber::EnvFilter::new("INFO")) .with(tracing_opentelemetry::layer().with_tracer(tracer)) @@ -63,5 +63,7 @@ async fn main() -> Result<(), Box greet().await?; + opentelemetry::global::shutdown_tracer_provider(); + Ok(()) } diff --git a/examples/tracing-grpc/src/server.rs b/examples/tracing-grpc/src/server.rs index d52586e82b..e75a1332ae 100644 --- a/examples/tracing-grpc/src/server.rs +++ b/examples/tracing-grpc/src/server.rs @@ -66,9 +66,9 @@ impl Greeter for MyGreeter { #[tokio::main] async fn main() -> Result<(), Box> { global::set_text_map_propagator(TraceContextPropagator::new()); - let (tracer, _uninstall) = opentelemetry_jaeger::new_pipeline() + let tracer = opentelemetry_jaeger::new_pipeline() .with_service_name("grpc-server") - .install()?; + .install_batch(opentelemetry::runtime::Tokio)?; tracing_subscriber::registry() .with(tracing_subscriber::EnvFilter::new("INFO")) .with(tracing_opentelemetry::layer().with_tracer(tracer)) @@ -82,5 +82,7 @@ async fn main() -> Result<(), Box .serve(addr) .await?; + opentelemetry::global::shutdown_tracer_provider(); + Ok(()) } diff --git a/opentelemetry-datadog/Cargo.toml b/opentelemetry-datadog/Cargo.toml index ab78a16a1f..f71f536a26 100644 --- a/opentelemetry-datadog/Cargo.toml +++ b/opentelemetry-datadog/Cargo.toml @@ -40,5 +40,5 @@ lazy_static = "1.4" base64 = "0.13" bytes = "1" futures-util = "0.3" -isahc = "0.9" +isahc = "1.4" opentelemetry = { path = "../opentelemetry", features = ["trace", "testing"] } diff --git a/opentelemetry-datadog/src/lib.rs b/opentelemetry-datadog/src/lib.rs index d0ff47e430..4a286b1f05 100644 --- a/opentelemetry-datadog/src/lib.rs +++ b/opentelemetry-datadog/src/lib.rs @@ -96,19 +96,17 @@ //! #[derive(Debug)] //! struct IsahcClient(isahc::HttpClient); //! -//! async fn body_to_bytes(mut body: isahc::Body) -> Result { -//! let mut bytes = Vec::with_capacity(body.len().unwrap_or(0).try_into()?); -//! let _ = body.read_to_end(&mut bytes).await?; -//! Ok(bytes.into()) -//! } -//! //! #[async_trait] //! impl HttpClient for IsahcClient { //! async fn send(&self, request: Request>) -> Result, HttpError> { -//! let response = self.0.send_async(request).await?; +//! let mut response = self.0.send_async(request).await?; +//! let status = response.status(); +//! let mut bytes = Vec::with_capacity(response.body().len().unwrap_or(0).try_into()?); +//! isahc::AsyncReadResponseExt::copy_to(&mut response, &mut bytes).await?; +//! //! Ok(Response::builder() //! .status(response.status()) -//! .body(body_to_bytes(response.into_body()).await?)?) +//! .body(bytes.into())?) //! } //! } //! diff --git a/opentelemetry-http/Cargo.toml b/opentelemetry-http/Cargo.toml index 0da8904402..096144c65a 100644 --- a/opentelemetry-http/Cargo.toml +++ b/opentelemetry-http/Cargo.toml @@ -14,7 +14,7 @@ async-trait = "0.1" bytes = "1" futures-util = { version = "0.3", default-features = false, features = ["io"] } http = "0.2" -isahc = { version = "0.9", default-features = false, optional = true } +isahc = { version = "1.4", default-features = false, optional = true } opentelemetry = { version = "0.14", path = "../opentelemetry", features = ["trace"] } reqwest = { version = "0.11", default-features = false, features = ["blocking"], optional = true } surf = { version = "2.0", default-features = false, optional = true } diff --git a/opentelemetry-http/src/lib.rs b/opentelemetry-http/src/lib.rs index a81585d045..2aa696c0b1 100644 --- a/opentelemetry-http/src/lib.rs +++ b/opentelemetry-http/src/lib.rs @@ -113,24 +113,20 @@ mod surf { #[cfg(feature = "isahc")] mod isahc { use super::{async_trait, Bytes, HttpClient, HttpError, Request, Response}; - use futures_util::io::AsyncReadExt as _; + use isahc::AsyncReadResponseExt; use std::convert::TryInto as _; #[async_trait] impl HttpClient for isahc::HttpClient { async fn send(&self, request: Request>) -> Result, HttpError> { - let response = self.send_async(request).await?; + let mut response = self.send_async(request).await?; + let mut bytes = Vec::with_capacity(response.body().len().unwrap_or(0).try_into()?); + response.copy_to(&mut bytes).await?; Ok(Response::builder() .status(response.status()) - .body(body_to_bytes(response.into_body()).await?)?) + .body(bytes.into())?) } } - - async fn body_to_bytes(mut body: isahc::Body) -> Result { - let mut bytes = Vec::with_capacity(body.len().unwrap_or(0).try_into()?); - let _ = body.read_to_end(&mut bytes).await?; - Ok(bytes.into()) - } } /// Methods to make working with responses from the [`HttpClient`] trait easier. diff --git a/opentelemetry-jaeger/Cargo.toml b/opentelemetry-jaeger/Cargo.toml index 47f45a0173..feccb8a98a 100644 --- a/opentelemetry-jaeger/Cargo.toml +++ b/opentelemetry-jaeger/Cargo.toml @@ -25,7 +25,7 @@ async-trait = "0.1" base64 = { version = "0.13", optional = true } futures-util = { version = "0.3", optional = true } http = { version = "0.2", optional = true } -isahc = { version = "0.9", default-features = false, optional = true } +isahc = { version = "1.4", default-features = false, optional = true } js-sys = { version = "0.3", optional = true } opentelemetry = { version = "0.14", default-features = false, features = ["trace"], path = "../opentelemetry" } opentelemetry-http = { version = "0.3", path = "../opentelemetry-http", optional = true } diff --git a/opentelemetry-otlp/Cargo.toml b/opentelemetry-otlp/Cargo.toml index a2266d61a2..ed0163da86 100644 --- a/opentelemetry-otlp/Cargo.toml +++ b/opentelemetry-otlp/Cargo.toml @@ -37,7 +37,7 @@ rustdoc-args = ["--cfg", "docsrs"] [dependencies] async-trait = "0.1" futures = "0.3" -grpcio = { version = "0.8", optional = true } +grpcio = { version = "0.9", optional = true } opentelemetry = { version = "0.14", default-features = false, features = ["trace"], path = "../opentelemetry" } prost = { version = "0.7", optional = true } protobuf = { version = "2.18", optional = true } @@ -53,7 +53,7 @@ http = "0.2" chrono = "0.4" tokio-stream = { version = "0.1", features = ["net"] } protobuf-codegen = { version = "2.16"} -protoc-grpcio = { version = "2.0"} +protoc-grpcio = { version = "3.0"} [features] trace = ["opentelemetry/trace"] diff --git a/opentelemetry-zipkin/Cargo.toml b/opentelemetry-zipkin/Cargo.toml index 9f2e69e43f..dffe429d17 100644 --- a/opentelemetry-zipkin/Cargo.toml +++ b/opentelemetry-zipkin/Cargo.toml @@ -32,7 +32,7 @@ opentelemetry = { version = "0.14", path = "../opentelemetry", features = ["trac opentelemetry-http = { version = "0.3", path = "../opentelemetry-http", optional = true } serde_json = "1.0" serde = { version = "1.0", features = ["derive"] } -typed-builder = "0.7" +typed-builder = "0.9" lazy_static = "1.4" http = "0.2" reqwest = { version = "0.11", optional = true, default-features = false } @@ -42,5 +42,5 @@ thiserror = { version = "1.0"} [dev-dependencies] bytes = "1" futures-util = "0.3" -isahc = "=0.9.6" +isahc = "1.4" opentelemetry = { version = "0.14", default-features = false, features = ["trace", "testing"], path = "../opentelemetry" } diff --git a/opentelemetry-zipkin/src/lib.rs b/opentelemetry-zipkin/src/lib.rs index 8587ca0c10..125c22526b 100644 --- a/opentelemetry-zipkin/src/lib.rs +++ b/opentelemetry-zipkin/src/lib.rs @@ -105,19 +105,17 @@ //! #[derive(Debug)] //! struct IsahcClient(isahc::HttpClient); //! -//! async fn body_to_bytes(mut body: isahc::Body) -> Result { -//! let mut bytes = Vec::with_capacity(body.len().unwrap_or(0).try_into()?); -//! let _ = body.read_to_end(&mut bytes).await?; -//! Ok(bytes.into()) -//! } -//! //! #[async_trait] //! impl HttpClient for IsahcClient { //! async fn send(&self, request: Request>) -> Result, HttpError> { -//! let response = self.0.send_async(request).await?; +//! let mut response = self.0.send_async(request).await?; +//! let status = response.status(); +//! let mut bytes = Vec::with_capacity(response.body().len().unwrap_or(0).try_into()?); +//! isahc::AsyncReadResponseExt::copy_to(&mut response, &mut bytes).await?; +//! //! Ok(Response::builder() //! .status(response.status()) -//! .body(body_to_bytes(response.into_body()).await?)?) +//! .body(bytes.into())?) //! } //! } //!