From 037cf5f2aa025b60879fa2d44dfbc7272894e8f1 Mon Sep 17 00:00:00 2001 From: katelyn martin Date: Sun, 1 Dec 2024 00:00:00 +0000 Subject: [PATCH 1/3] chore(hyper): define hyper as a workspace dependency this commit alters various crates' manifests, pointing to a common workspace-level hyper dependency. note that the lockfile is not altered, this commit does *not* affect the version of hyper used, or have any other affect on the dependency graph. this will make future maintenance, upgrading, and patching of our hyper dependency marginally easier. see linkerd/linkerd2#8733 for more information on upgrading to hyper 1.0. Signed-off-by: katelyn martin --- Cargo.toml | 1 + hyper-balance/Cargo.toml | 2 +- linkerd/app/admin/Cargo.toml | 2 +- linkerd/app/core/Cargo.toml | 2 +- linkerd/app/inbound/Cargo.toml | 4 ++-- linkerd/app/integration/Cargo.toml | 2 +- linkerd/app/outbound/Cargo.toml | 2 +- linkerd/app/test/Cargo.toml | 2 +- linkerd/http/executor/Cargo.toml | 2 +- linkerd/http/metrics/Cargo.toml | 2 +- linkerd/http/retry/Cargo.toml | 2 +- linkerd/http/upgrade/Cargo.toml | 2 +- linkerd/metrics/Cargo.toml | 2 +- linkerd/proxy/http/Cargo.toml | 2 +- linkerd/proxy/tap/Cargo.toml | 2 +- 15 files changed, 16 insertions(+), 15 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 1990bda881..d249e8a0c3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -97,6 +97,7 @@ debug = 1 lto = true [workspace.dependencies] +hyper = { version = "0.14", default-features = false } linkerd2-proxy-api = "0.15.0" tokio-rustls = { version = "0.26", default-features = false, features = ["ring", "logging"] } # linkerd2-proxy-api = { git = "https://github.com/linkerd/linkerd2-proxy-api.git", branch = "main" } diff --git a/hyper-balance/Cargo.toml b/hyper-balance/Cargo.toml index 27193038f9..341181e373 100644 --- a/hyper-balance/Cargo.toml +++ b/hyper-balance/Cargo.toml @@ -9,7 +9,7 @@ publish = false [dependencies] futures = { version = "0.3", default-features = false } http = "0.2" -hyper = { version = "0.14", features = ["deprecated"] } +hyper = { workspace = true, features = ["deprecated"] } pin-project = "1" tower = { version = "0.4", default-features = false, features = ["load"] } tokio = { version = "1", features = ["macros"] } diff --git a/linkerd/app/admin/Cargo.toml b/linkerd/app/admin/Cargo.toml index 680657504c..c5636652a2 100644 --- a/linkerd/app/admin/Cargo.toml +++ b/linkerd/app/admin/Cargo.toml @@ -18,7 +18,7 @@ log-streaming = ["linkerd-tracing/stream"] deflate = { version = "1", optional = true, features = ["gzip"] } http = "0.2" http-body = "0.4" -hyper = { version = "0.14", features = ["deprecated", "http1", "http2"] } +hyper = { workspace = true, features = ["deprecated", "http1", "http2"] } futures = { version = "0.3", default-features = false } pprof = { version = "0.14", optional = true, features = ["prost-codec"] } serde = "1" diff --git a/linkerd/app/core/Cargo.toml b/linkerd/app/core/Cargo.toml index bf0ba916f9..66889802f9 100644 --- a/linkerd/app/core/Cargo.toml +++ b/linkerd/app/core/Cargo.toml @@ -17,7 +17,7 @@ bytes = "1" drain = { version = "0.1", features = ["retain"] } http = "0.2" http-body = "0.4" -hyper = { version = "0.14", features = ["deprecated", "http1", "http2"] } +hyper = { workspace = true, features = ["deprecated", "http1", "http2"] } futures = { version = "0.3", default-features = false } ipnet = "2.10" prometheus-client = "0.22" diff --git a/linkerd/app/inbound/Cargo.toml b/linkerd/app/inbound/Cargo.toml index 9e152aa587..936224a431 100644 --- a/linkerd/app/inbound/Cargo.toml +++ b/linkerd/app/inbound/Cargo.toml @@ -45,13 +45,13 @@ path = "../../proxy/server-policy" features = ["proto"] [target.'cfg(fuzzing)'.dependencies] -hyper = { version = "0.14", features = ["deprecated", "http1", "http2"] } +hyper = { workspace = true, features = ["deprecated", "http1", "http2"] } linkerd-app-test = { path = "../test" } arbitrary = { version = "1", features = ["derive"] } libfuzzer-sys = { version = "0.4", features = ["arbitrary-derive"] } [dev-dependencies] -hyper = { version = "0.14", features = ["deprecated", "http1", "http2"] } +hyper = { workspace = true, features = ["deprecated", "http1", "http2"] } linkerd-app-test = { path = "../test" } linkerd-http-metrics = { path = "../../http/metrics", features = ["test-util"] } linkerd-idle-cache = { path = "../../idle-cache", features = ["test-util"] } diff --git a/linkerd/app/integration/Cargo.toml b/linkerd/app/integration/Cargo.toml index e6077780c6..d8d40ef724 100644 --- a/linkerd/app/integration/Cargo.toml +++ b/linkerd/app/integration/Cargo.toml @@ -22,7 +22,7 @@ futures = { version = "0.3", default-features = false, features = ["executor"] } h2 = "0.3" http = "0.2" http-body = "0.4" -hyper = { version = "0.14", features = [ +hyper = { workspace = true, features = [ "backports", "deprecated", "http1", diff --git a/linkerd/app/outbound/Cargo.toml b/linkerd/app/outbound/Cargo.toml index c4cad0f536..a1c690ea80 100644 --- a/linkerd/app/outbound/Cargo.toml +++ b/linkerd/app/outbound/Cargo.toml @@ -54,7 +54,7 @@ linkerd-tonic-watch = { path = "../../tonic-watch" } [dev-dependencies] futures-util = "0.3" http-body = "0.4" -hyper = { version = "0.14", features = ["backports", "deprecated", "http1", "http2"] } +hyper = { workspace = true, features = ["backports", "deprecated", "http1", "http2"] } tokio = { version = "1", features = ["macros", "sync", "time"] } tokio-rustls = { workspace = true } tokio-test = "0.4" diff --git a/linkerd/app/test/Cargo.toml b/linkerd/app/test/Cargo.toml index 5aaf994e6c..4a27959ded 100644 --- a/linkerd/app/test/Cargo.toml +++ b/linkerd/app/test/Cargo.toml @@ -17,7 +17,7 @@ futures = { version = "0.3", default-features = false } h2 = "0.3" http = "0.2" http-body = "0.4" -hyper = { version = "0.14", features = ["deprecated", "http1", "http2"] } +hyper = { workspace = true, features = ["deprecated", "http1", "http2"] } linkerd-app-core = { path = "../core" } linkerd-http-route = { path = "../../http/route", optional = true } linkerd-identity = { path = "../../identity" } diff --git a/linkerd/http/executor/Cargo.toml b/linkerd/http/executor/Cargo.toml index 186173d5ac..ef75f18f6a 100644 --- a/linkerd/http/executor/Cargo.toml +++ b/linkerd/http/executor/Cargo.toml @@ -10,6 +10,6 @@ HTTP runtime components for Linkerd. """ [dependencies] -hyper = { version = "0.14", features = ["deprecated"] } +hyper = { workspace = true, features = ["deprecated"] } tokio = { version = "1", features = ["rt"] } tracing = "0.1" diff --git a/linkerd/http/metrics/Cargo.toml b/linkerd/http/metrics/Cargo.toml index ac8537fb1c..d6f83c5ec4 100644 --- a/linkerd/http/metrics/Cargo.toml +++ b/linkerd/http/metrics/Cargo.toml @@ -14,7 +14,7 @@ bytes = "1" futures = { version = "0.3", default-features = false } http = "0.2" http-body = "0.4" -hyper = { version = "0.14", features = ["deprecated", "http1", "http2"] } +hyper = { workspace = true, features = ["deprecated", "http1", "http2"] } parking_lot = "0.12" pin-project = "1" tokio = { version = "1", features = ["time"] } diff --git a/linkerd/http/retry/Cargo.toml b/linkerd/http/retry/Cargo.toml index 51be316b9f..a228327bcd 100644 --- a/linkerd/http/retry/Cargo.toml +++ b/linkerd/http/retry/Cargo.toml @@ -24,6 +24,6 @@ linkerd-metrics = { path = "../../metrics" } linkerd-stack = { path = "../../stack" } [dev-dependencies] -hyper = { version = "0.14", features = ["deprecated"] } +hyper = { workspace = true, features = ["deprecated"] } linkerd-tracing = { path = "../../tracing", features = ["ansi"] } tokio = { version = "1", features = ["macros", "rt"] } diff --git a/linkerd/http/upgrade/Cargo.toml b/linkerd/http/upgrade/Cargo.toml index 5ed08e7072..60c77c30f3 100644 --- a/linkerd/http/upgrade/Cargo.toml +++ b/linkerd/http/upgrade/Cargo.toml @@ -15,7 +15,7 @@ drain = "0.1" futures = { version = "0.3", default-features = false } http = "0.2" http-body = "0.4" -hyper = { version = "0.14", default-features = false, features = ["deprecated", "client"] } +hyper = { workspace = true, default-features = false, features = ["deprecated", "client"] } pin-project = "1" tokio = { version = "1", default-features = false } tower = { version = "0.4", default-features = false } diff --git a/linkerd/metrics/Cargo.toml b/linkerd/metrics/Cargo.toml index 5452283197..16aaedb6b6 100644 --- a/linkerd/metrics/Cargo.toml +++ b/linkerd/metrics/Cargo.toml @@ -15,7 +15,7 @@ test_util = [] [dependencies] deflate = { version = "1", features = ["gzip"] } http = "0.2" -hyper = { version = "0.14", features = ["deprecated", "http1", "http2"] } +hyper = { workspace = true, features = ["deprecated", "http1", "http2"] } linkerd-stack = { path = "../stack", optional = true } linkerd-system = { path = "../system", optional = true } parking_lot = "0.12" diff --git a/linkerd/proxy/http/Cargo.toml b/linkerd/proxy/http/Cargo.toml index 1c3332fbe1..4af7d4cb38 100644 --- a/linkerd/proxy/http/Cargo.toml +++ b/linkerd/proxy/http/Cargo.toml @@ -20,7 +20,7 @@ h2 = "0.3" http = "0.2" http-body = "0.4" httparse = "1" -hyper = { version = "0.14", features = [ +hyper = { workspace = true, features = [ "backports", "client", "deprecated", diff --git a/linkerd/proxy/tap/Cargo.toml b/linkerd/proxy/tap/Cargo.toml index b10528fd79..b953c58f29 100644 --- a/linkerd/proxy/tap/Cargo.toml +++ b/linkerd/proxy/tap/Cargo.toml @@ -8,7 +8,7 @@ publish = false [dependencies] http = "0.2" -hyper = { version = "0.14", features = ["backports", "deprecated", "http1", "http2"] } +hyper = { workspace = true, features = ["backports", "deprecated", "http1", "http2"] } futures = { version = "0.3", default-features = false } ipnet = "2.10" linkerd2-proxy-api = { workspace = true, features = ["tap"] } From 177fe23e937fe9fb243eeda1d66cb7f4b11e5fe3 Mon Sep 17 00:00:00 2001 From: katelyn martin Date: Sun, 1 Dec 2024 00:00:00 +0000 Subject: [PATCH 2/3] chore(hyper): upgrade hyper to include hyperium/hyper#3796 this commit bumps the version of the workspace's hyper dependency to include hyperium/hyper#3796, which backports the server connection builder's `max_pending_accept_reset_streams()` method. see linkerd/linkerd2#8733 for more information on upgrading to hyper 1.0. this commit is based upon #3456. to show the hyper commit in the context of the git log: ```sh ; basename $(pwd) hyper ; git remote get-url upstream git@github.com:hyperium/hyper.git ; git log --oneline --decorate 0.14.x -5 a24f0c0a (HEAD -> 0.14.x, upstream/0.14.x) feat(server): backport `max_pending_accept_reset_streams()` to builder (#3796) 96550840 chore(ci): pin hashbrown for MSRV job (#3797) 7829148b (tag: v0.14.31) v0.14.31 97b595e5 perf(http1): improve parsing of sequentially partial messages 739d5e63 chore(ci): pin some deps for MSRV job ``` Signed-off-by: katelyn martin --- Cargo.lock | 3 +-- Cargo.toml | 8 ++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b9256a9f43..b20da64484 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -943,8 +943,7 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" version = "0.14.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +source = "git+https://github.com/hyperium/hyper.git?rev=a24f0c0a#a24f0c0af8e1f4c6b7cc3a47c83eb6e4af88aca6" dependencies = [ "bytes", "futures-channel", diff --git a/Cargo.toml b/Cargo.toml index d249e8a0c3..87ca708d5d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -101,3 +101,11 @@ hyper = { version = "0.14", default-features = false } linkerd2-proxy-api = "0.15.0" tokio-rustls = { version = "0.26", default-features = false, features = ["ring", "logging"] } # linkerd2-proxy-api = { git = "https://github.com/linkerd/linkerd2-proxy-api.git", branch = "main" } + +# NB: hyperium/hyper#3796 backports the server connection builder's +# `max_pending_accept_reset_streams()` method. once released, we can depend on +# 0.14.32 or later, but until then will point our hyper dependency to the +# commit in the 0.14 branch. +[patch.'crates-io'.hyper] +git = "https://github.com/hyperium/hyper.git" +rev = "a24f0c0a" From 72be10322a4323e8754429e17e7678766ebaae36 Mon Sep 17 00:00:00 2001 From: katelyn martin Date: Sun, 1 Dec 2024 00:00:00 +0000 Subject: [PATCH 3/3] chore(deny.toml): add `hyperium/hyper` to git allowlist Signed-off-by: katelyn martin --- deny.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/deny.toml b/deny.toml index 7865a96bd3..8639794cfc 100644 --- a/deny.toml +++ b/deny.toml @@ -73,4 +73,5 @@ skip-tree = [ [sources] unknown-registry = "deny" unknown-git = "deny" +allow-git = ["https://github.com/hyperium/hyper.git"] allow-registry = ["https://github.com/rust-lang/crates.io-index"]