Skip to content

Commit 98d409f

Browse files
feat(deps): update opentelemetry 0.30 & tonic 0.13 (#240)
--------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: David Bernard <david.bernard.31@gmail.com>
1 parent f49b94a commit 98d409f

File tree

8 files changed

+54
-37
lines changed

8 files changed

+54
-37
lines changed

Cargo.toml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,27 +27,27 @@ axum = { version = "0.8", default-features = false }
2727
http = "^1"
2828
hyper = "1"
2929
insta = { version = "^1", features = ["redactions", "yaml"] }
30-
opentelemetry = { version = "0.29", features = [
30+
opentelemetry = { version = "0.30", features = [
3131
"trace",
3232
], default-features = false }
33-
opentelemetry_sdk = { version = "0.29", default-features = false, features = [
33+
opentelemetry_sdk = { version = "0.30", default-features = false, features = [
3434
"rt-tokio",
3535
] }
36-
opentelemetry-aws = { version = "0.17", default-features = false }
37-
opentelemetry-jaeger-propagator = { version = "0.29", default-features = false }
38-
opentelemetry-resource-detectors = { version = "0.8", default-features = false }
39-
opentelemetry-semantic-conventions = { version = "0.29", default-features = false }
40-
opentelemetry-zipkin = { version = "0.29", default-features = false }
41-
opentelemetry-otlp = { version = "0.29", default-features = false }
42-
opentelemetry-proto = { version = "0.29", default-features = false }
43-
opentelemetry-stdout = { version = "0.29" }
36+
opentelemetry-aws = { version = "0.18", default-features = false }
37+
opentelemetry-jaeger-propagator = { version = "0.30", default-features = false }
38+
opentelemetry-resource-detectors = { version = "0.9", default-features = false }
39+
opentelemetry-semantic-conventions = { version = "0.30", default-features = false }
40+
opentelemetry-zipkin = { version = "0.30", default-features = false }
41+
opentelemetry-otlp = { version = "0.30", default-features = false }
42+
opentelemetry-proto = { version = "0.30", default-features = false }
43+
opentelemetry-stdout = { version = "0.30" }
4444
rstest = "0.25"
4545
tokio = { version = "1", default-features = false }
4646
tokio-stream = { version = "0.1", default-features = false }
47-
tonic = { version = "0.12", default-features = false } #should be sync with opentelemetry-proto
47+
tonic = { version = "0.13", default-features = false } #should be sync with opentelemetry-proto
4848
tower = { version = "0.5", default-features = false }
4949
tracing = "0.1"
50-
tracing-opentelemetry = "0.30"
50+
tracing-opentelemetry = "0.31"
5151

5252
[profile.dev.package.insta]
5353
opt-level = 3

examples/grpc/Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,16 @@ init-tracing-opentelemetry = { path = "../../init-tracing-opentelemetry", featur
1616
opentelemetry = { workspace = true }
1717
prost = "0.13"
1818
tokio = { workspace = true, features = ["full"] }
19-
tonic = "0.12"
20-
tonic-health = "0.12"
21-
tonic-reflection = "0.12"
19+
tonic = { workspace = true, features = ["transport", "router"] }
20+
tonic-health = "0.13"
21+
tonic-reflection = "0.13"
2222
tonic-tracing-opentelemetry = { path = "../../tonic-tracing-opentelemetry" }
2323
tower = { workspace = true }
2424
tracing = { workspace = true }
2525
tracing-opentelemetry-instrumentation-sdk = { path = "../../tracing-opentelemetry-instrumentation-sdk" }
2626

2727
[build-dependencies]
28-
tonic-build = "0.12"
28+
tonic-build = "0.13"
2929

3030
[[bin]]
3131
name = "server"

examples/grpc/src/generated/helloworld.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ pub mod greeter_client {
4545
}
4646
impl<T> GreeterClient<T>
4747
where
48-
T: tonic::client::GrpcService<tonic::body::BoxBody>,
48+
T: tonic::client::GrpcService<tonic::body::Body>,
4949
T::Error: Into<StdError>,
5050
T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
5151
<T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
@@ -66,13 +66,13 @@ pub mod greeter_client {
6666
F: tonic::service::Interceptor,
6767
T::ResponseBody: Default,
6868
T: tonic::codegen::Service<
69-
http::Request<tonic::body::BoxBody>,
69+
http::Request<tonic::body::Body>,
7070
Response = http::Response<
71-
<T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
71+
<T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
7272
>,
7373
>,
7474
<T as tonic::codegen::Service<
75-
http::Request<tonic::body::BoxBody>,
75+
http::Request<tonic::body::Body>,
7676
>>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
7777
{
7878
GreeterClient::new(InterceptedService::new(inner, interceptor))
@@ -239,7 +239,7 @@ pub mod greeter_server {
239239
B: Body + std::marker::Send + 'static,
240240
B::Error: Into<StdError> + std::marker::Send + 'static,
241241
{
242-
type Response = http::Response<tonic::body::BoxBody>;
242+
type Response = http::Response<tonic::body::Body>;
243243
type Error = std::convert::Infallible;
244244
type Future = BoxFuture<Self::Response, Self::Error>;
245245
fn poll_ready(
@@ -338,7 +338,9 @@ pub mod greeter_server {
338338
}
339339
_ => {
340340
Box::pin(async move {
341-
let mut response = http::Response::new(empty_body());
341+
let mut response = http::Response::new(
342+
tonic::body::Body::default(),
343+
);
342344
let headers = response.headers_mut();
343345
headers
344346
.insert(

examples/grpc/src/server.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
5151
let _guard = init_tracing_opentelemetry::tracing_subscriber_ext::init_subscribers()
5252
.expect("init subscribers");
5353

54-
let addr = "0.0.0.0:50051".parse().unwrap();
54+
let addr = "0.0.0.0:50051".parse()?;
5555
let greeter = MyGreeter::default();
5656

5757
let (_, health_service) = tonic_health::server::health_reporter();
@@ -62,6 +62,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
6262
println!("GreeterServer listening on {}", addr);
6363

6464
Server::builder()
65+
.timeout(std::time::Duration::from_secs(10))
6566
// create trace for every request including health_service
6667
.layer(server::OtelGrpcLayer::default().filter(filters::reject_healthcheck))
6768
.add_service(health_service)

fake-opentelemetry-collector/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ opentelemetry_sdk = { workspace = true, features = [
3333
serde = { version = "1", features = ["derive"] }
3434
tokio = { workspace = true, features = ["full"] }
3535
tokio-stream = { workspace = true, features = ["net"] }
36-
tonic = { workspace = true, features = ["codegen", "transport"]}
36+
tonic = { workspace = true, features = ["codegen", "transport", "router"]}
3737
tracing = { workspace = true }
3838

3939
[dev-dependencies]

tonic-tracing-opentelemetry/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ http-body = "1"
2323
hyper = { workspace = true }
2424
opentelemetry = { workspace = true }
2525
pin-project-lite = "0.2"
26-
tonic = { version = "0.12", default-features = false }
26+
tonic = { workspace = true, default-features = false }
2727
tower = { workspace = true }
2828
tracing = { workspace = true }
2929
tracing-opentelemetry = { workspace = true }

tonic-tracing-opentelemetry/src/middleware/server.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::{
66
pin::Pin,
77
task::{Context, Poll},
88
};
9-
use tower::{BoxError, Layer, Service};
9+
use tower::{Layer, Service};
1010
use tracing::Span;
1111
use tracing_opentelemetry_instrumentation_sdk::http as otel_http;
1212

@@ -52,8 +52,9 @@ pub struct OtelGrpcService<S> {
5252

5353
impl<S, B, B2> Service<Request<B>> for OtelGrpcService<S>
5454
where
55-
S: Service<Request<B>, Response = Response<B2>, Error = BoxError> + Clone + Send + 'static,
56-
S::Future: Send + 'static,
55+
S: Service<Request<B>, Response = Response<B2>> + Clone + Send + 'static,
56+
//S::Future: Send + 'static,
57+
S::Error: std::error::Error,
5758
B: Send + 'static,
5859
{
5960
type Response = S::Response;
@@ -67,7 +68,7 @@ where
6768
//type Future = Inspect<S::Future, Box<dyn FnOnce(S::Response)>>;
6869

6970
fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
70-
self.inner.poll_ready(cx).map_err(Into::into)
71+
self.inner.poll_ready(cx)
7172
}
7273

7374
fn call(&mut self, req: Request<B>) -> Self::Future {
@@ -108,11 +109,14 @@ pin_project! {
108109
}
109110
}
110111

111-
impl<Fut, ResBody> Future for ResponseFuture<Fut>
112+
impl<Fut, ResBody, Error> Future for ResponseFuture<Fut>
112113
where
113-
Fut: Future<Output = Result<Response<ResBody>, BoxError>>,
114+
Fut: Future<Output = Result<Response<ResBody>, Error>>,
115+
// Require that the inner service's error can be converted into a `BoxError`.
116+
//Error: Into<BoxError>,
117+
Error: std::error::Error,
114118
{
115-
type Output = Result<Response<ResBody>, BoxError>;
119+
type Output = Result<Response<ResBody>, Error>;
116120

117121
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
118122
let this = self.project();

tracing-opentelemetry-instrumentation-sdk/src/http/grpc_server.rs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::http::{extract_service_method, http_host, user_agent};
2-
use crate::{otel_trace_span, BoxError};
2+
use crate::otel_trace_span;
33
use tracing::field::Empty;
44

55
use super::grpc_update_span_from_response;
@@ -24,7 +24,15 @@ pub fn make_span_from_request<B>(req: &http::Request<B>) -> tracing::Span {
2424
)
2525
}
2626

27-
fn update_span_from_error(span: &tracing::Span, error: &BoxError) {
27+
// fn update_span_from_error<E>(span: &tracing::Span, error: &E) {
28+
// span.record("otel.status_code", "ERROR");
29+
// span.record("rpc.grpc.status_code", 2);
30+
// }
31+
32+
fn update_span_from_error<E>(span: &tracing::Span, error: &E)
33+
where
34+
E: std::error::Error,
35+
{
2836
span.record("otel.status_code", "ERROR");
2937
span.record("rpc.grpc.status_code", 2);
3038
span.record("exception.message", error.to_string());
@@ -33,10 +41,12 @@ fn update_span_from_error(span: &tracing::Span, error: &BoxError) {
3341
.map(|s| span.record("exception.message", s.to_string()));
3442
}
3543

36-
pub fn update_span_from_response_or_error<B>(
44+
pub fn update_span_from_response_or_error<B, E>(
3745
span: &tracing::Span,
38-
response: &Result<http::Response<B>, BoxError>,
39-
) {
46+
response: &Result<http::Response<B>, E>,
47+
) where
48+
E: std::error::Error,
49+
{
4050
match response {
4151
Ok(response) => {
4252
grpc_update_span_from_response(span, response, true);

0 commit comments

Comments
 (0)