From 980dff05af05a4388b27acc22be9ee420bbeb807 Mon Sep 17 00:00:00 2001 From: katelyn martin Date: Wed, 24 Sep 2025 00:00:00 +0000 Subject: [PATCH] refactor(app/outbound): use `svc::layers()` to apply layers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit we apply a collection of `Layers` to an inner service in our metrics subsystem. doing so with `layer::mk()` and `Layer::layer()` is somewhat ungainly. this commit relies on `svc::layers()` to apply a sequence of telemetry layers in sequence. this should have no mechanical difference with the preƫxisting code. Signed-off-by: katelyn martin --- .../logical/policy/route/backend/metrics.rs | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/linkerd/app/outbound/src/http/logical/policy/route/backend/metrics.rs b/linkerd/app/outbound/src/http/logical/policy/route/backend/metrics.rs index 285082ddaa..285d0a89b2 100644 --- a/linkerd/app/outbound/src/http/logical/policy/route/backend/metrics.rs +++ b/linkerd/app/outbound/src/http/logical/policy/route/backend/metrics.rs @@ -35,7 +35,7 @@ pub fn layer( NewResponseDuration>, N>, >, >, -> + Clone +> where T: MkStreamLabel, N: svc::NewService, @@ -59,15 +59,25 @@ where body_metrics, } = metrics.clone(); - svc::layer::mk(move |inner| { - use svc::Layer; - NewRecordBodyData::layer_via(ExtractRecordBodyDataParams(body_metrics.clone())).layer( - NewCountRequests::layer_via(ExtractRequestCount(requests.clone())).layer( - NewRecordDuration::layer_via(ExtractRecordDurationParams(responses.clone())) - .layer(inner), - ), - ) - }) + let duration = { + let extract = ExtractRecordDurationParams(responses.clone()); + NewRecordDuration::layer_via(extract) + }; + + let count_reqs = { + let extract = ExtractRequestCount(requests.clone()); + NewCountRequests::layer_via(extract) + }; + + let body_data = { + let extract = ExtractRecordBodyDataParams(body_metrics.clone()); + NewRecordBodyData::layer_via(extract) + }; + + svc::layers() + .push(duration) + .push(count_reqs) + .push(body_data) } #[derive(Clone, Debug)]