diff --git a/Cargo.lock b/Cargo.lock index 5c4b0afd0..eecece52f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -367,38 +367,6 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" -[[package]] -name = "axum" -version = "0.6.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" -dependencies = [ - "async-trait", - "axum-core 0.3.4", - "bitflags 1.3.2", - "bytes", - "futures-util", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.32", - "itoa", - "matchit 0.7.3", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "serde_json", - "serde_path_to_error", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "tokio", - "tower 0.4.13", - "tower-layer", - "tower-service", -] - [[package]] name = "axum" version = "0.7.9" @@ -460,23 +428,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "axum-core" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http 0.2.12", - "http-body 0.4.6", - "mime", - "rustversion", - "tower-layer", - "tower-service", -] - [[package]] name = "axum-core" version = "0.4.5" @@ -1145,7 +1096,7 @@ dependencies = [ "futures-core", "prost 0.13.5", "prost-types", - "tonic", + "tonic 0.12.3", "tracing-core", ] @@ -1169,7 +1120,7 @@ dependencies = [ "thread_local", "tokio", "tokio-stream", - "tonic", + "tonic 0.12.3", "tracing", "tracing-core", "tracing-subscriber", @@ -2249,17 +2200,17 @@ dependencies = [ [[package]] name = "etcd-client" -version = "0.14.1" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0452bcc559431b16f472b7ab86e2f9ccd5f3c2da3795afbd6b773665e047fe" +checksum = "88365f1a5671eb2f7fc240adb216786bc6494b38ce15f1d26ad6eaa303d5e822" dependencies = [ "http 1.3.1", "prost 0.13.5", "tokio", "tokio-stream", - "tonic", + "tonic 0.13.1", "tonic-build", - "tower 0.4.13", + "tower 0.5.2", "tower-service", ] @@ -4107,7 +4058,7 @@ dependencies = [ name = "metrics" version = "0.4.0" dependencies = [ - "axum 0.6.20", + "axum 0.8.3", "clap 4.5.40", "dynamo-llm", "dynamo-runtime", @@ -7545,10 +7496,8 @@ dependencies = [ "percent-encoding", "pin-project", "prost 0.13.5", - "rustls-pemfile", "socket2", "tokio", - "tokio-rustls", "tokio-stream", "tower 0.4.13", "tower-layer", @@ -7557,10 +7506,40 @@ dependencies = [ ] [[package]] -name = "tonic-build" -version = "0.12.3" +name = "tonic" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" +checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" +dependencies = [ + "async-trait", + "axum 0.8.3", + "base64 0.22.1", + "bytes", + "h2 0.4.9", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost 0.13.5", + "socket2", + "tokio", + "tokio-rustls", + "tokio-stream", + "tower 0.5.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tonic-build" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac6f67be712d12f0b41328db3137e0d0757645d8904b4cb7d51cd9c2279e847" dependencies = [ "prettyplease", "proc-macro2", @@ -7598,9 +7577,12 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", + "indexmap 2.9.0", "pin-project-lite", + "slab", "sync_wrapper 1.0.2", "tokio", + "tokio-util", "tower-layer", "tower-service", "tracing", diff --git a/Cargo.toml b/Cargo.toml index a17bc6ce2..02fb58fda 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,7 +43,7 @@ chrono = { version = "0.4", default-features = false, features = ["alloc", "std" derive_builder = { version = "0.20" } derive-getters = { version = "0.5" } either = { version = "1.13", features = ["serde"] } -etcd-client = { version = "0.14", features = ["tls"] } +etcd-client = { version = "0.16", features = ["tls"] } futures = { version = "0.3" } hf-hub = { version = "0.4.2", default-features = false, features = ["tokio", "rustls-tls", "ureq"] } humantime = { version = "2.2.0" } diff --git a/components/metrics/Cargo.toml b/components/metrics/Cargo.toml index 420fff158..7167a3ee3 100644 --- a/components/metrics/Cargo.toml +++ b/components/metrics/Cargo.toml @@ -35,7 +35,6 @@ thiserror = { workspace = true } tokio = { workspace = true } tracing = { workspace = true } -# TODO: Update axum to 0.8 -axum = { version = "0.6" } +axum = { version = "0.8" } clap = { version = "4.5", features = ["derive", "env"] } reqwest = { version = "0.12.22", default-features = false, features = ["json", "rustls-tls"] } diff --git a/components/metrics/src/lib.rs b/components/metrics/src/lib.rs index 7fb632b88..80b2f163d 100644 --- a/components/metrics/src/lib.rs +++ b/components/metrics/src/lib.rs @@ -210,20 +210,12 @@ impl PrometheusMetricsCollector { let (tx, rx) = tokio::sync::oneshot::channel(); self.shutdown_tx = Some(tx); - // Try to bind to the address first to fail early if it's not available - let server = match axum::Server::try_bind(&addr) { - Ok(server) => server, - Err(e) => { - return Err(error!( - "Failed to bind to address {}: {}. The port may be in use.", - addr, e - )); - } - }; - // Spawn the server in a background task tokio::spawn(async move { - let server = server.serve(app.into_make_service()); + let listener = tokio::net::TcpListener::bind(addr) + .await + .unwrap_or_else(|_| panic!("could not bind to address: {addr}")); + let server = axum::serve(listener, app); // Create a future that completes when shutdown signal is received let shutdown_future = async { diff --git a/lib/bindings/python/Cargo.lock b/lib/bindings/python/Cargo.lock index d67722444..cea483a96 100644 --- a/lib/bindings/python/Cargo.lock +++ b/lib/bindings/python/Cargo.lock @@ -316,40 +316,13 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" -[[package]] -name = "axum" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" -dependencies = [ - "async-trait", - "axum-core 0.4.5", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "itoa", - "matchit 0.7.3", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "sync_wrapper", - "tower 0.5.2", - "tower-layer", - "tower-service", -] - [[package]] name = "axum" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de45108900e1f9b9242f7f2e254aa3e2c029c921c258fe9e6b4217eeebd54288" dependencies = [ - "axum-core 0.5.2", + "axum-core", "bytes", "form_urlencoded", "futures-util", @@ -359,7 +332,7 @@ dependencies = [ "hyper", "hyper-util", "itoa", - "matchit 0.8.4", + "matchit", "memchr", "mime", "percent-encoding", @@ -371,32 +344,12 @@ dependencies = [ "serde_urlencoded", "sync_wrapper", "tokio", - "tower 0.5.2", + "tower", "tower-layer", "tower-service", "tracing", ] -[[package]] -name = "axum-core" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper", - "tower-layer", - "tower-service", -] - [[package]] name = "axum-core" version = "0.5.2" @@ -1179,7 +1132,7 @@ dependencies = [ "async-stream", "async-trait", "async_zmq", - "axum 0.8.3", + "axum", "blake3", "bs62", "bytemuck", @@ -1271,7 +1224,7 @@ dependencies = [ "async-stream", "async-trait", "async_zmq", - "axum 0.8.3", + "axum", "blake3", "bytes", "chrono", @@ -1434,9 +1387,9 @@ dependencies = [ [[package]] name = "etcd-client" -version = "0.14.1" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0452bcc559431b16f472b7ab86e2f9ccd5f3c2da3795afbd6b773665e047fe" +checksum = "88365f1a5671eb2f7fc240adb216786bc6494b38ce15f1d26ad6eaa303d5e822" dependencies = [ "http", "prost", @@ -1444,7 +1397,7 @@ dependencies = [ "tokio-stream", "tonic", "tonic-build", - "tower 0.4.13", + "tower", "tower-service", ] @@ -1965,7 +1918,7 @@ checksum = "3ac5654356c6f7f6116905aeaf92ab002c3d03414ada5dbe0bb2e32aa5fea173" dependencies = [ "fancy-regex", "ggml-quants", - "indexmap 2.9.0", + "indexmap", "log", "num_enum", ] @@ -1994,7 +1947,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.9.0", + "indexmap", "slab", "tokio", "tokio-util", @@ -2015,12 +1968,6 @@ dependencies = [ "rand_distr", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.14.5" @@ -2368,16 +2315,6 @@ dependencies = [ "icu_properties", ] -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - [[package]] name = "indexmap" version = "2.9.0" @@ -2640,12 +2577,6 @@ dependencies = [ "regex-automata 0.1.10", ] -[[package]] -name = "matchit" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" - [[package]] name = "matchit" version = "0.8.4" @@ -3265,7 +3196,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset", - "indexmap 2.9.0", + "indexmap", ] [[package]] @@ -3921,7 +3852,7 @@ dependencies = [ "tokio", "tokio-rustls", "tokio-util", - "tower 0.5.2", + "tower", "tower-http", "tower-service", "url", @@ -4864,7 +4795,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.9.0", + "indexmap", "serde", "serde_spanned", "toml_datetime", @@ -4880,13 +4811,12 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "tonic" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" dependencies = [ - "async-stream", "async-trait", - "axum 0.7.9", + "axum", "base64 0.22.1", "bytes", "h2", @@ -4899,12 +4829,11 @@ dependencies = [ "percent-encoding", "pin-project", "prost", - "rustls-pemfile", "socket2", "tokio", "tokio-rustls", "tokio-stream", - "tower 0.4.13", + "tower", "tower-layer", "tower-service", "tracing", @@ -4912,9 +4841,9 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" +checksum = "eac6f67be712d12f0b41328db3137e0d0757645d8904b4cb7d51cd9c2279e847" dependencies = [ "prettyplease", "proc-macro2", @@ -4924,26 +4853,6 @@ dependencies = [ "syn 2.0.100", ] -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project", - "pin-project-lite", - "rand 0.8.5", - "slab", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] - [[package]] name = "tower" version = "0.5.2" @@ -4952,9 +4861,12 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", + "indexmap", "pin-project-lite", + "slab", "sync_wrapper", "tokio", + "tokio-util", "tower-layer", "tower-service", "tracing", @@ -4973,7 +4885,7 @@ dependencies = [ "http-body", "iri-string", "pin-project-lite", - "tower 0.5.2", + "tower", "tower-layer", "tower-service", ] @@ -5900,7 +5812,7 @@ dependencies = [ "crc32fast", "crossbeam-utils", "displaydoc", - "indexmap 2.9.0", + "indexmap", "num_enum", "thiserror 1.0.69", ]