From d7c19f3fd499f67c11956ef5e9f518bc12a34f91 Mon Sep 17 00:00:00 2001 From: Alex Orlenko Date: Thu, 10 Aug 2023 16:27:19 +0100 Subject: [PATCH] WIP: don't include body transfer to root span lifetime --- casper-server/src/middleware/trace.rs | 37 +++++---------------------- 1 file changed, 7 insertions(+), 30 deletions(-) diff --git a/casper-server/src/middleware/trace.rs b/casper-server/src/middleware/trace.rs index 1729b5d8..f543f696 100644 --- a/casper-server/src/middleware/trace.rs +++ b/casper-server/src/middleware/trace.rs @@ -1,13 +1,13 @@ -use std::error::Error; +// use std::error::Error; use std::future::Future; use std::pin::Pin; use std::task::{Context, Poll}; -use ntex::http::body::{Body, BodySize, MessageBody, ResponseBody}; +// use ntex::http::body::{Body, BodySize, MessageBody, ResponseBody}; use ntex::service::{ forward_poll_ready, forward_poll_shutdown, Middleware, Service, ServiceCall, ServiceCtx, }; -use ntex::util::Bytes; +// use ntex::util::Bytes; use ntex::web::{ErrorRenderer, WebRequest, WebResponse}; use opentelemetry::trace::TraceContextExt as _; @@ -68,7 +68,7 @@ where req.host = %connection_info.host(), req.peer_addr = %req.peer_addr().map(|addr| addr.to_string()).unwrap_or_default(), resp.status_code = Empty, - otel.name = %format!("HTTP {} {}", req.method(), req.uri()), + otel.name = %format!("{} {}", req.method(), req.uri().path()), otel.kind = "server", otel.status_code = Empty, trace_id = Empty, @@ -141,38 +141,15 @@ where } else { span.record("otel.status_code", "OK"); } + span.context().span().end(); } Err(_) => { span.record("resp.status_code", 500); span.record("otel.status_code", "ERROR"); + span.context().span().end(); } } - - Poll::Ready(res.map(|response| { - response.map_body(move |_, body| { - ResponseBody::Other(Body::from_message(StreamSpan { body, span })) - }) - })) + Poll::Ready(res) }) } } - -struct StreamSpan { - body: ResponseBody, - span: Span, -} - -impl MessageBody for StreamSpan { - #[inline] - fn size(&self) -> BodySize { - self.body.size() - } - - #[inline] - fn poll_next_chunk( - &mut self, - cx: &mut Context<'_>, - ) -> Poll>>> { - self.span.in_scope(|| self.body.poll_next_chunk(cx)) - } -}