From ed33cc41357ce3d42c81c28ec329e36ce72aecea Mon Sep 17 00:00:00 2001 From: Oliver Gould Date: Thu, 1 Oct 2020 21:14:49 +0000 Subject: [PATCH 1/3] stack-tracing: Fix contexts on new/make services --- linkerd/stack/tracing/src/lib.rs | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/linkerd/stack/tracing/src/lib.rs b/linkerd/stack/tracing/src/lib.rs index f977b9638d..f60eaa448b 100644 --- a/linkerd/stack/tracing/src/lib.rs +++ b/linkerd/stack/tracing/src/lib.rs @@ -63,23 +63,23 @@ impl tower::layer::Layer for InstrumentMakeLayer { impl NewService for InstrumentMake where - T: std::fmt::Debug, G: GetSpan, N: NewService, { type Service = Instrument; fn new_service(&mut self, target: T) -> Self::Service { - trace!(?target, "new_service"); let span = self.get_span.get_span(&target); - let inner = span.in_scope(move || self.make.new_service(target)); + let inner = span.in_scope(move || { + trace!("new"); + self.make.new_service(target) + }); Instrument { inner, span } } } impl tower::Service for InstrumentMake where - T: std::fmt::Debug, G: GetSpan, M: tower::Service, { @@ -88,16 +88,21 @@ where type Future = Instrument; fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll> { - trace!("poll_ready"); + trace!("make ready"); let ready = self.make.poll_ready(cx); - trace!(ready = ready.is_ready()); + match ready { + Poll::Pending => trace!(ready = false), + Poll::Ready(ref res) => trace!(ready = true, ok = res.is_ok()), + } ready } fn call(&mut self, target: T) -> Self::Future { - trace!(?target, "make_service"); let span = self.get_span.get_span(&target); - let inner = span.in_scope(|| self.make.call(target)); + let inner = span.in_scope(|| { + trace!("make"); + self.make.call(target) + }); Instrument { inner, span } } } @@ -162,9 +167,12 @@ where fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll> { let _enter = self.span.enter(); - trace!("poll ready"); + trace!("ready"); let ready = self.inner.poll_ready(cx); - trace!(ready = ready.is_ready()); + match ready { + Poll::Pending => trace!(ready = false), + Poll::Ready(ref res) => trace!(ready = true, ok = res.is_ok()), + } ready } From 3cc728be4a81125765b091f809c78e727fa7f4ee Mon Sep 17 00:00:00 2001 From: Oliver Gould Date: Thu, 1 Oct 2020 21:15:49 +0000 Subject: [PATCH 2/3] Tighten up HTTP contexts --- linkerd/app/inbound/src/lib.rs | 4 +--- linkerd/app/outbound/src/lib.rs | 2 +- linkerd/proxy/http/src/version.rs | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/linkerd/app/inbound/src/lib.rs b/linkerd/app/inbound/src/lib.rs index 8333364d06..f542057f19 100644 --- a/linkerd/app/inbound/src/lib.rs +++ b/linkerd/app/inbound/src/lib.rs @@ -365,9 +365,7 @@ impl Config { .box_http_response(), ) .push_map_target(|(_, accept): (http::Version, tls::accept::Meta)| accept) - .instrument( - |(version, _): &(http::Version, tls::accept::Meta)| info_span!("http", %version), - ) + .instrument(|(v, _): &(http::Version, tls::accept::Meta)| info_span!("http", %v)) .check_new_service::<(http::Version, tls::accept::Meta), http::Request<_>>() .into_inner(); diff --git a/linkerd/app/outbound/src/lib.rs b/linkerd/app/outbound/src/lib.rs index c9f0b3a73a..d1eb492086 100644 --- a/linkerd/app/outbound/src/lib.rs +++ b/linkerd/app/outbound/src/lib.rs @@ -487,7 +487,7 @@ impl Config { .box_http_response(), ) .push(svc::layer::mk(http::normalize_uri::MakeNormalizeUri::new)) - .instrument(|a: &endpoint::HttpAccept| info_span!("http", version=%a.version)) + .instrument(|a: &endpoint::HttpAccept| info_span!("http", v=%a.version)) .push_map_target(endpoint::HttpAccept::from) .check_new_service::<(http::Version, endpoint::TcpLogical), http::Request<_>>() .into_inner(); diff --git a/linkerd/proxy/http/src/version.rs b/linkerd/proxy/http/src/version.rs index 98574c9026..364160cefb 100644 --- a/linkerd/proxy/http/src/version.rs +++ b/linkerd/proxy/http/src/version.rs @@ -66,7 +66,7 @@ impl Version { impl std::fmt::Display for Version { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - Self::Http1 => write!(f, "http/1.x"), + Self::Http1 => write!(f, "1.x"), Self::H2 => write!(f, "h2"), } } From 0cbc68fc290666faa283f2de8d1dd0becfe08dc6 Mon Sep 17 00:00:00 2001 From: Oliver Gould Date: Thu, 1 Oct 2020 21:24:33 +0000 Subject: [PATCH 3/3] touchup --- linkerd/app/outbound/src/lib.rs | 4 ++-- linkerd/stack/tracing/src/lib.rs | 12 +++++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/linkerd/app/outbound/src/lib.rs b/linkerd/app/outbound/src/lib.rs index d1eb492086..bbb187924f 100644 --- a/linkerd/app/outbound/src/lib.rs +++ b/linkerd/app/outbound/src/lib.rs @@ -382,6 +382,7 @@ impl Config { .push(metrics.stack.layer(stack_labels("logical"))), ), ) + .instrument(|logical: &HttpLogical| info_span!("logical", dst = %logical.dst)) .into_make_service() .spawn_buffer(buffer_capacity) .check_make_service::>() @@ -389,7 +390,6 @@ impl Config { // Strips headers that may be set by this proxy. .push_on_response(http::strip_header::request::layer(DST_OVERRIDE_HEADER)) .check_make_service_clone::>() - .instrument(|logical: &HttpLogical| info_span!("logical", dst = %logical.dst)) .into_inner() } @@ -487,7 +487,7 @@ impl Config { .box_http_response(), ) .push(svc::layer::mk(http::normalize_uri::MakeNormalizeUri::new)) - .instrument(|a: &endpoint::HttpAccept| info_span!("http", v=%a.version)) + .instrument(|a: &endpoint::HttpAccept| info_span!("http", v = %a.version)) .push_map_target(endpoint::HttpAccept::from) .check_new_service::<(http::Version, endpoint::TcpLogical), http::Request<_>>() .into_inner(); diff --git a/linkerd/stack/tracing/src/lib.rs b/linkerd/stack/tracing/src/lib.rs index f60eaa448b..e8982a00d2 100644 --- a/linkerd/stack/tracing/src/lib.rs +++ b/linkerd/stack/tracing/src/lib.rs @@ -88,11 +88,10 @@ where type Future = Instrument; fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll> { - trace!("make ready"); let ready = self.make.poll_ready(cx); match ready { - Poll::Pending => trace!(ready = false), - Poll::Ready(ref res) => trace!(ready = true, ok = res.is_ok()), + Poll::Pending => trace!(ready = false, "make"), + Poll::Ready(ref res) => trace!(ready = true, ok = res.is_ok(), "make"), } ready } @@ -167,11 +166,10 @@ where fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll> { let _enter = self.span.enter(); - trace!("ready"); let ready = self.inner.poll_ready(cx); match ready { - Poll::Pending => trace!(ready = false), - Poll::Ready(ref res) => trace!(ready = true, ok = res.is_ok()), + Poll::Pending => trace!(ready = false, "service"), + Poll::Ready(ref res) => trace!(ready = true, ok = res.is_ok(), "service"), } ready } @@ -179,7 +177,7 @@ where fn call(&mut self, request: Req) -> Self::Future { let _enter = self.span.enter(); - trace!(?request, "call"); + trace!(?request, "service"); self.inner.call(request).instrument(self.span.clone()) } }