Remove fancy follows-from code
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Aode (lion) 2021-12-06 20:30:59 -06:00
parent 54f03facf6
commit e571e59abb
2 changed files with 9 additions and 44 deletions

View file

@ -1,7 +1,7 @@
[package]
name = "tracing-awc"
description = "Tracing instrumentation for the awc http client"
version = "0.1.0-beta.12"
version = "0.1.0-beta.13"
authors = ["asonix <asonix@asonix.dog"]
edition = "2018"
license = "AGPL-3.0"

View file

@ -11,7 +11,7 @@ use std::{
pin::Pin,
task::{Context, Poll},
};
use tracing::{instrument::Instrumented, Id, Instrument, Span};
use tracing::{instrument::Instrumented, Instrument, Span};
#[cfg(feature = "opentelemetry_0_13")]
use opentelemetry_0_13_pkg as opentelemetry;
@ -138,39 +138,6 @@ where
}
}
enum IdOrSpan {
Id(Option<Id>),
Span(Span),
}
impl IdOrSpan {
fn from_id(id: Option<Id>) -> Self {
IdOrSpan::Id(id)
}
fn take(&mut self) -> Self {
std::mem::replace(self, IdOrSpan::Id(None))
}
fn span(&self) -> Option<&Span> {
match self {
IdOrSpan::Span(ref span) => Some(span),
_ => None,
}
}
fn as_span(&mut self, f: impl Fn(Option<Id>) -> Span) -> &Span {
let span = match self.take() {
Self::Id(id) => f(id),
Self::Span(span) => span,
};
*self = Self::Span(span);
self.span().expect("Span should always exist")
}
}
pin_project_lite::pin_project! {
pub struct TracingFuture<F> {
span: Span,
@ -204,8 +171,10 @@ where
}
ConnectResponse::Client(client_response.map_body(|_, payload| {
let instrumented =
InstrumentedBody::new(IdOrSpan::from_id(span.id()), payload);
let body_span =
tracing::info_span!(parent: None, "HTTP Client Response Body");
body_span.follows_from(span.id());
let instrumented = InstrumentedBody::new(body_span, payload);
let pinned: Pin<Box<dyn Stream<Item = Result<Bytes, PayloadError>>>> =
Box::pin(instrumented);
@ -243,7 +212,7 @@ where
pin_project_lite::pin_project! {
struct InstrumentedBody<S> {
span: IdOrSpan,
span: Span,
#[pin]
body: S,
@ -254,7 +223,7 @@ impl<S> InstrumentedBody<S>
where
S: Stream<Item = Result<Bytes, PayloadError>>,
{
fn new(span: IdOrSpan, body: S) -> InstrumentedBody<S> {
fn new(span: Span, body: S) -> InstrumentedBody<S> {
InstrumentedBody { span, body }
}
}
@ -268,11 +237,7 @@ where
fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
let this = self.as_mut().project();
let span = this.span.as_span(|id| {
let span = tracing::info_span!("HTTP Client Response Body");
span.follows_from(id);
span
});
let span = this.span;
let body = this.body;
span.in_scope(|| body.poll_next(cx))