From 5e4ebb3424587aad93cd2800778bd5e01655f72b Mon Sep 17 00:00:00 2001 From: katelyn martin Date: Fri, 1 Nov 2024 00:00:00 +0000 Subject: [PATCH] refactor(proxy/http): create `linkerd-http-retain` crate (#3382) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit this moves the `Retain` middleware from `linkerd-proxy-http` into a new `linkerd-http-retain` crate. as previously, reƫxports are added to make this a backwards compatible change. this moves another http body middleware out of the proxy's core http crate. great news. Signed-off-by: katelyn martin --- Cargo.lock | 12 +++++++++++ Cargo.toml | 1 + linkerd/http/retain/Cargo.toml | 20 +++++++++++++++++++ .../src/retain.rs => http/retain/src/lib.rs} | 6 ++++-- linkerd/proxy/http/Cargo.toml | 1 + linkerd/proxy/http/src/lib.rs | 3 +-- 6 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 linkerd/http/retain/Cargo.toml rename linkerd/{proxy/http/src/retain.rs => http/retain/src/lib.rs} (93%) diff --git a/Cargo.lock b/Cargo.lock index 4e558d284d..7f1625cce5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1782,6 +1782,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "linkerd-http-retain" +version = "0.1.0" +dependencies = [ + "http", + "http-body", + "linkerd-stack", + "pin-project", + "tower", +] + [[package]] name = "linkerd-http-retry" version = "0.1.0" @@ -2188,6 +2199,7 @@ dependencies = [ "linkerd-http-executor", "linkerd-http-h2", "linkerd-http-insert", + "linkerd-http-retain", "linkerd-http-version", "linkerd-io", "linkerd-proxy-balance", diff --git a/Cargo.toml b/Cargo.toml index fa2e89ba4b..0e1d82e3dc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,6 +32,7 @@ members = [ "linkerd/http/insert", "linkerd/http/metrics", "linkerd/http/prom", + "linkerd/http/retain", "linkerd/http/retry", "linkerd/http/route", "linkerd/http/version", diff --git a/linkerd/http/retain/Cargo.toml b/linkerd/http/retain/Cargo.toml new file mode 100644 index 0000000000..dfbdda108c --- /dev/null +++ b/linkerd/http/retain/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "linkerd-http-retain" +version = "0.1.0" +authors = ["Linkerd Developers "] +license = "Apache-2.0" +edition = "2021" +publish = false +description = """ +Tower middleware to manage service lifecycles. + +This is mostly intended to support cache eviction. +""" + +[dependencies] +http = "0.2" +http-body = "0.4" +pin-project = "1" +tower = { version = "0.4", default-features = false } + +linkerd-stack = { path = "../../stack" } diff --git a/linkerd/proxy/http/src/retain.rs b/linkerd/http/retain/src/lib.rs similarity index 93% rename from linkerd/proxy/http/src/retain.rs rename to linkerd/http/retain/src/lib.rs index e5ed0f9deb..fe60f2c9ea 100644 --- a/linkerd/proxy/http/src/retain.rs +++ b/linkerd/http/retain/src/lib.rs @@ -1,5 +1,7 @@ -//! Provides a middleware that holds an inner service as long as responses are -//! being processed. +//! Tower middleware to manage service lifecycles. +//! +//! Provides a [`Retain`] middleware that holds an inner service as long as responses are +//! being processed. This is mostly intended to support cache eviction. use linkerd_stack::layer; use pin_project::pin_project; diff --git a/linkerd/proxy/http/Cargo.toml b/linkerd/proxy/http/Cargo.toml index 57f5be3f3d..de0703f0be 100644 --- a/linkerd/proxy/http/Cargo.toml +++ b/linkerd/proxy/http/Cargo.toml @@ -46,6 +46,7 @@ linkerd-http-classify = { path = "../../http/classify" } linkerd-http-executor = { path = "../../http/executor" } linkerd-http-h2 = { path = "../../http/h2" } linkerd-http-insert = { path = "../../http/insert" } +linkerd-http-retain = { path = "../../http/retain" } linkerd-http-version = { path = "../../http/version" } linkerd-io = { path = "../../io" } linkerd-proxy-balance = { path = "../balance" } diff --git a/linkerd/proxy/http/src/lib.rs b/linkerd/proxy/http/src/lib.rs index 2e46e77a7e..72a10d3b4a 100644 --- a/linkerd/proxy/http/src/lib.rs +++ b/linkerd/proxy/http/src/lib.rs @@ -15,7 +15,6 @@ mod header_from_target; pub mod normalize_uri; pub mod orig_proto; mod override_authority; -mod retain; mod server; pub mod stream_timeouts; pub mod strip_header; @@ -33,7 +32,6 @@ pub use self::{ header_from_target::NewHeaderFromTarget, normalize_uri::{MarkAbsoluteForm, NewNormalizeUri}, override_authority::{AuthorityOverride, NewOverrideAuthority}, - retain::Retain, server::{NewServeHttp, Params as ServerParams, ServeHttp}, stream_timeouts::{EnforceTimeouts, StreamTimeouts}, strip_header::StripHeader, @@ -48,6 +46,7 @@ pub use linkerd_http_box::{BoxBody, BoxRequest, BoxResponse, EraseResponse}; pub use linkerd_http_classify as classify; pub use linkerd_http_executor::TracingExecutor; pub use linkerd_http_insert as insert; +pub use linkerd_http_retain::{self as retain, Retain}; pub use linkerd_http_version::{self as version, Version}; #[derive(Clone, Debug)]