diff --git a/linkerd/app/outbound/src/http/logical/policy/route.rs b/linkerd/app/outbound/src/http/logical/policy/route.rs index cc1033e4d3..dca0e4b07c 100644 --- a/linkerd/app/outbound/src/http/logical/policy/route.rs +++ b/linkerd/app/outbound/src/http/logical/policy/route.rs @@ -132,7 +132,7 @@ where route_ref, .. } = &rt.params; - retry::RetryLabelExtract(parent_ref.clone(), route_ref.clone()) + metrics::labels::RouteLabelExtract(parent_ref.clone(), route_ref.clone()) }; let metrics = metrics.retry.clone(); retry::NewHttpRetry::layer_via_mk(mk_extract, metrics) diff --git a/linkerd/app/outbound/src/http/logical/policy/route/metrics/labels.rs b/linkerd/app/outbound/src/http/logical/policy/route/metrics/labels.rs index fa355c2751..f7f144d487 100644 --- a/linkerd/app/outbound/src/http/logical/policy/route/metrics/labels.rs +++ b/linkerd/app/outbound/src/http/logical/policy/route/metrics/labels.rs @@ -1,6 +1,7 @@ //! Prometheus label types. use linkerd_app_core::{ - dns, errors, metrics::prom::EncodeLabelSetMut, proxy::http, Error as BoxError, + dns, errors, metrics::prom::EncodeLabelSetMut, proxy::http, svc::ExtractParam, + Error as BoxError, }; use prometheus_client::encoding::*; @@ -39,6 +40,9 @@ pub struct GrpcRsp { pub error: Option, } +#[derive(Clone, Debug)] +pub struct RouteLabelExtract(pub ParentRef, pub RouteRef); + #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)] pub enum Error { FailFast, @@ -211,6 +215,17 @@ impl EncodeLabelSet for GrpcRsp { } } +// === impl RouteLabelExtract === + +impl ExtractParam> for RouteLabelExtract { + fn extract_param(&self, t: &http::Request) -> Route { + let Self(parent, route) = self; + let uri = t.uri(); + + Route::new(parent.clone(), route.clone(), uri) + } +} + // === impl Error === impl Error { diff --git a/linkerd/app/outbound/src/http/logical/policy/route/retry.rs b/linkerd/app/outbound/src/http/logical/policy/route/retry.rs index a6d856918e..fe54a08509 100644 --- a/linkerd/app/outbound/src/http/logical/policy/route/retry.rs +++ b/linkerd/app/outbound/src/http/logical/policy/route/retry.rs @@ -1,12 +1,14 @@ -use super::{extensions, metrics::labels::Route as RouteLabels}; -use crate::{ParentRef, RouteRef}; +use super::{ + extensions, + metrics::labels::{Route as RouteLabels, RouteLabelExtract}, +}; use futures::future::{Either, Ready}; use linkerd_app_core::{ cause_ref, classify, exp_backoff::ExponentialBackoff, is_caused_by, proxy::http::{self, stream_timeouts::ResponseTimeoutError}, - svc::{self, http::h2, ExtractParam}, + svc::{self, http::h2}, Error, Result, }; use linkerd_http_retry::{self as retry, peek_trailers::PeekTrailersBody}; @@ -18,7 +20,7 @@ use tokio::time; pub struct IsRetry(()); pub type NewHttpRetry = - retry::NewHttpRetry; + retry::NewHttpRetry; #[derive(Clone, Debug)] pub struct RetryPolicy { @@ -31,9 +33,6 @@ pub struct RetryPolicy { pub backoff: Option, } -#[derive(Clone, Debug)] -pub struct RetryLabelExtract(pub ParentRef, pub RouteRef); - pub type RouteRetryMetrics = retry::MetricFamilies; // === impl RetryPolicy === @@ -163,14 +162,3 @@ impl RetryPolicy { false } } - -// === impl RetryLabelExtract === - -impl ExtractParam> for RetryLabelExtract { - fn extract_param(&self, t: &http::Request) -> RouteLabels { - let Self(parent, route) = self; - let uri = t.uri(); - - RouteLabels::new(parent.clone(), route.clone(), uri) - } -}