diff --git a/seaweed-volume/Cargo.lock b/seaweed-volume/Cargo.lock index 165868439..ce806a527 100644 --- a/seaweed-volume/Cargo.lock +++ b/seaweed-volume/Cargo.lock @@ -503,7 +503,7 @@ dependencies = [ "rustls-pki-types", "tokio", "tokio-rustls", - "tower 0.5.3", + "tower", "tracing", ] @@ -628,13 +628,13 @@ dependencies = [ [[package]] name = "axum" -version = "0.7.9" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" dependencies = [ - "async-trait", "axum-core", "bytes", + "form_urlencoded", "futures-util", "http 1.4.0", "http-body 1.0.1", @@ -648,14 +648,13 @@ dependencies = [ "multer", "percent-encoding", "pin-project-lite", - "rustversion", - "serde", + "serde_core", "serde_json", "serde_path_to_error", "serde_urlencoded", "sync_wrapper", "tokio", - "tower 0.5.3", + "tower", "tower-layer", "tower-service", "tracing", @@ -663,19 +662,17 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ - "async-trait", "bytes", - "futures-util", + "futures-core", "http 1.4.0", "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", - "rustversion", "sync_wrapper", "tower-layer", "tower-service", @@ -1654,19 +1651,13 @@ dependencies = [ "futures-core", "futures-sink", "http 1.4.0", - "indexmap 2.13.1", + "indexmap", "slab", "tokio", "tokio-util", "tracing", ] -[[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" @@ -1860,7 +1851,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.3", + "socket2", "tokio", "tower-service", "tracing", @@ -2027,16 +2018,6 @@ dependencies = [ "quick-error", ] -[[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.13.1" @@ -2250,9 +2231,9 @@ dependencies = [ [[package]] name = "matchit" -version = "0.7.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "md-5" @@ -2619,17 +2600,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset 0.4.2", - "indexmap 2.13.1", + "indexmap", ] [[package]] name = "petgraph" -version = "0.7.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ "fixedbitset 0.5.7", - "indexmap 2.13.1", + "hashbrown 0.15.5", + "indexmap", ] [[package]] @@ -2836,12 +2818,12 @@ dependencies = [ [[package]] name = "prost" -version = "0.13.5" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +checksum = "528ac67416ff8646872a3c02cad9cc4ee5dc9f9540c9b10771855c95cb2e5ae1" dependencies = [ "bytes", - "prost-derive 0.13.5", + "prost-derive 0.14.4", ] [[package]] @@ -2867,19 +2849,20 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.13.5" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" +checksum = "03da047801ff44bb6a4d407d4860c05fd70bb81714e6b2f3812603d5b145b042" dependencies = [ "heck", "itertools 0.14.0", "log", "multimap", - "once_cell", - "petgraph 0.7.1", + "petgraph 0.8.3", "prettyplease", - "prost 0.13.5", - "prost-types 0.13.5", + "prost 0.14.4", + "prost-types 0.14.4", + "pulldown-cmark", + "pulldown-cmark-to-cmark", "regex", "syn", "tempfile", @@ -2900,9 +2883,9 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.5" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf" dependencies = [ "anyhow", "itertools 0.14.0", @@ -2922,11 +2905,11 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.13.5" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" +checksum = "f94967dc7688f3054c7fac87473ffae4cc4c3904800e2d9f5b857246d8963b0a" dependencies = [ - "prost 0.13.5", + "prost 0.14.4", ] [[package]] @@ -2993,6 +2976,26 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95067976aca6421a523e491fce939a3e65249bac4b977adee0ee9771568e8aa3" +[[package]] +name = "pulldown-cmark" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f068eba8e7071c5f9511831b44f32c740d5adf574e990f946ddb53db2f314e" +dependencies = [ + "bitflags 2.11.0", + "memchr", + "unicase", +] + +[[package]] +name = "pulldown-cmark-to-cmark" +version = "22.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab1ad36992cead65f02aa399a373a42730922f1525d988172634fdefdecb8a60" +dependencies = [ + "pulldown-cmark", +] + [[package]] name = "pxfm" version = "0.1.28" @@ -3018,7 +3021,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", - "socket2 0.6.3", + "socket2", "thiserror 2.0.18", "tokio", "tracing", @@ -3056,7 +3059,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.3", + "socket2", "tracing", "windows-sys 0.60.2", ] @@ -3262,8 +3265,8 @@ dependencies = [ "tokio", "tokio-rustls", "tokio-util", - "tower 0.5.3", - "tower-http 0.6.8", + "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", @@ -3719,16 +3722,6 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" -[[package]] -name = "socket2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - [[package]] name = "socket2" version = "0.6.3" @@ -3990,7 +3983,7 @@ dependencies = [ "parking_lot 0.12.5", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.3", + "socket2", "tokio-macros", "windows-sys 0.61.2", ] @@ -4077,7 +4070,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.13.1", + "indexmap", "serde", "serde_spanned", "toml_datetime", @@ -4093,11 +4086,10 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "tonic" -version = "0.12.3" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +checksum = "ac2a5518c70fa84342385732db33fb3f44bc4cc748936eb5833d2df34d6445ef" dependencies = [ - "async-stream", "async-trait", "axum", "base64", @@ -4111,13 +4103,12 @@ dependencies = [ "hyper-util", "percent-encoding", "pin-project", - "prost 0.13.5", - "rustls-pemfile", - "socket2 0.5.10", + "socket2", + "sync_wrapper", "tokio", "tokio-rustls", "tokio-stream", - "tower 0.4.13", + "tower", "tower-layer", "tower-service", "tracing", @@ -4125,49 +4116,55 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.12.3" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" +checksum = "c68f61875ac5293cf72e6c8cf0158086428c82c37229e98c840878f1706b0322" dependencies = [ "prettyplease", "proc-macro2", - "prost-build 0.13.5", - "prost-types 0.13.5", "quote", "syn", ] [[package]] -name = "tonic-reflection" -version = "0.12.3" +name = "tonic-prost" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "878d81f52e7fcfd80026b7fdb6a9b578b3c3653ba987f87f0dce4b64043cba27" +checksum = "50849f68853be452acf590cde0b146665b8d507b3b8af17261df47e02c209ea0" dependencies = [ - "prost 0.13.5", - "prost-types 0.13.5", - "tokio", - "tokio-stream", + "bytes", + "prost 0.14.4", "tonic", ] [[package]] -name = "tower" -version = "0.4.13" +name = "tonic-prost-build" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "654e5643eff75d7f8c99197ce1440ed19a3474eada74c12bbac488b2cafdae27" dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project", - "pin-project-lite", - "rand 0.8.7", - "slab", + "prettyplease", + "proc-macro2", + "prost-build 0.14.4", + "prost-types 0.14.4", + "quote", + "syn", + "tempfile", + "tonic-build", +] + +[[package]] +name = "tonic-reflection" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acccd136a4bf19810a1fde9c74edc6129b42a66b44d0c1c8aaa67aeb49a146a7" +dependencies = [ + "prost 0.14.4", + "prost-types 0.14.4", "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", + "tokio-stream", + "tonic", + "tonic-prost", ] [[package]] @@ -4178,26 +4175,12 @@ checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", + "indexmap", "pin-project-lite", + "slab", "sync_wrapper", "tokio", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-http" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" -dependencies = [ - "bitflags 2.11.0", - "bytes", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "pin-project-lite", + "tokio-util", "tower-layer", "tower-service", "tracing", @@ -4216,9 +4199,10 @@ dependencies = [ "http-body 1.0.1", "iri-string", "pin-project-lite", - "tower 0.5.3", + "tower", "tower-layer", "tower-service", + "tracing", ] [[package]] @@ -4495,7 +4479,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" dependencies = [ "anyhow", - "indexmap 2.13.1", + "indexmap", "wasm-encoder", "wasmparser", ] @@ -4521,7 +4505,7 @@ checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ "bitflags 2.11.0", "hashbrown 0.15.5", - "indexmap 2.13.1", + "indexmap", "semver", ] @@ -4590,8 +4574,8 @@ dependencies = [ "parking_lot 0.12.5", "pprof", "prometheus", - "prost 0.13.5", - "prost-types 0.13.5", + "prost 0.14.4", + "prost-types 0.14.4", "protoc-bin-vendored", "rand 0.10.2", "redb", @@ -4612,10 +4596,11 @@ dependencies = [ "tokio-stream", "toml", "tonic", - "tonic-build", + "tonic-prost", + "tonic-prost-build", "tonic-reflection", - "tower 0.4.13", - "tower-http 0.5.2", + "tower", + "tower-http", "tracing", "tracing-subscriber", "uuid", @@ -4965,7 +4950,7 @@ checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ "anyhow", "heck", - "indexmap 2.13.1", + "indexmap", "prettyplease", "syn", "wasm-metadata", @@ -4996,7 +4981,7 @@ checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ "anyhow", "bitflags 2.11.0", - "indexmap 2.13.1", + "indexmap", "log", "serde", "serde_derive", @@ -5015,7 +5000,7 @@ checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" dependencies = [ "anyhow", "id-arena", - "indexmap 2.13.1", + "indexmap", "log", "semver", "serde", diff --git a/seaweed-volume/Cargo.toml b/seaweed-volume/Cargo.toml index e45545c4b..6c823a8c9 100644 --- a/seaweed-volume/Cargo.toml +++ b/seaweed-volume/Cargo.toml @@ -24,9 +24,6 @@ default = ["5bytes"] redb-experimental-cursor = ["redb/experimental_cursor"] [lints.clippy] -# Every RPC path returns tonic::Status (176 bytes). Boxing it would change -# every handler signature for no gain, so the large-Err lint is off. -result_large_err = "allow" # Protobuf message literals keep `..Default::default()` on purpose: it is # what lets a proto gain a field without touching every constructor. needless_update = "allow" @@ -38,18 +35,19 @@ tokio-stream = { version = "0.1", features = ["net"] } tokio-io-timeout = "1" # gRPC + protobuf -tonic = { version = "0.12", features = ["tls"] } -tonic-reflection = "0.12" -prost = "0.13" -prost-types = "0.13" +tonic = { version = "0.14", features = ["tls-aws-lc"] } +tonic-prost = "0.14" +tonic-reflection = "0.14" +prost = "0.14" +prost-types = "0.14" # HTTP server -axum = { version = "0.7", features = ["multipart"] } +axum = { version = "0.8", features = ["multipart"] } http-body = "1" hyper = { version = "1", features = ["full"] } hyper-util = { version = "0.1", features = ["tokio", "service", "server-auto", "http1", "http2"] } -tower = "0.4" -tower-http = { version = "0.5", features = ["cors", "trace"] } +tower = { version = "0.5", features = ["util"] } +tower-http = { version = "0.6", features = ["cors", "trace"] } # CLI clap = { version = "4", features = ["derive"] } @@ -149,7 +147,7 @@ pprof = { version = "0.15", features = ["prost-codec"] } tempfile = "3" [build-dependencies] -tonic-build = "0.12" +tonic-prost-build = "0.14" # Ships protoc with the build so neither CI nor a developer needs a system # install, and so the version is pinned rather than whatever the platform's # package manager happens to carry. diff --git a/seaweed-volume/build.rs b/seaweed-volume/build.rs index 90ca9ef26..fe85f354c 100644 --- a/seaweed-volume/build.rs +++ b/seaweed-volume/build.rs @@ -12,7 +12,7 @@ fn main() -> Result<(), Box> { } let out_dir = std::path::PathBuf::from(std::env::var("OUT_DIR")?); - tonic_build::configure() + tonic_prost_build::configure() .build_server(true) .build_client(true) // filer.proto uses proto3 optional, which protoc rejects without this diff --git a/seaweed-volume/src/server/grpc_server.rs b/seaweed-volume/src/server/grpc_server.rs index 9df610304..a0696853a 100644 --- a/seaweed-volume/src/server/grpc_server.rs +++ b/seaweed-volume/src/server/grpc_server.rs @@ -5519,7 +5519,7 @@ async fn copy_file_from_source( throttler: &mut WriteThrottler, ) -> Result where - T: tonic::client::GrpcService, + T: tonic::client::GrpcService, T::Error: Into, T::ResponseBody: http_body::Body + Send + 'static, ::Error: Into + Send, diff --git a/seaweed-volume/src/server/request_id.rs b/seaweed-volume/src/server/request_id.rs index 1a2b61f40..1e2a8315f 100644 --- a/seaweed-volume/src/server/request_id.rs +++ b/seaweed-volume/src/server/request_id.rs @@ -29,11 +29,11 @@ impl Layer for GrpcRequestIdLayer { impl Service> for GrpcRequestIdService where - S: Service, Response = http::Response> + Send + 'static, + S: Service, Response = http::Response> + Send + 'static, S::Future: Send + 'static, B: Send + 'static, { - type Response = http::Response; + type Response = http::Response; type Error = S::Error; type Future = Pin> + Send>>; @@ -57,7 +57,7 @@ where let future = self.inner.call(request); Box::pin(async move { - let mut response: http::Response = + let mut response: http::Response = scope_request_id(request_id.clone(), future).await?; if let Ok(value) = HeaderValue::from_str(&request_id) { response.headers_mut().insert("x-amz-request-id", value); diff --git a/seaweed-volume/src/server/volume_server.rs b/seaweed-volume/src/server/volume_server.rs index 4503a8be2..9e59605c2 100644 --- a/seaweed-volume/src/server/volume_server.rs +++ b/seaweed-volume/src/server/volume_server.rs @@ -430,13 +430,13 @@ pub fn build_admin_router_with_ui(state: Arc, ui_enabled: boo .route("/healthz", get(handlers::healthz_handler)) .route("/favicon.ico", get(handlers::favicon_handler)) .route( - "/seaweedfsstatic/*path", + "/seaweedfsstatic/{*path}", get(handlers::static_asset_handler), ) .route("/", any(admin_store_handler)) - .route("/:path", any(admin_store_handler)) - .route("/:vid/:fid", any(admin_store_handler)) - .route("/:vid/:fid/:filename", any(admin_store_handler)) + .route("/{path}", any(admin_store_handler)) + .route("/{vid}/{fid}", any(admin_store_handler)) + .route("/{vid}/{fid}/{filename}", any(admin_store_handler)) .fallback(admin_store_handler); if ui_enabled { // Note: /stats/* endpoints are commented out in Go's volume_server.go (L130-134). @@ -453,13 +453,13 @@ pub fn build_public_router(state: Arc) -> Router { Router::new() .route("/favicon.ico", get(handlers::favicon_handler)) .route( - "/seaweedfsstatic/*path", + "/seaweedfsstatic/{*path}", get(handlers::static_asset_handler), ) .route("/", any(public_store_handler)) - .route("/:path", any(public_store_handler)) - .route("/:vid/:fid", any(public_store_handler)) - .route("/:vid/:fid/:filename", any(public_store_handler)) + .route("/{path}", any(public_store_handler)) + .route("/{vid}/{fid}", any(public_store_handler)) + .route("/{vid}/{fid}/{filename}", any(public_store_handler)) .fallback(public_store_handler) .layer(middleware::from_fn(common_headers_middleware)) .with_state(state) diff --git a/seaweed-worker/Cargo.lock b/seaweed-worker/Cargo.lock index ce3a56e18..2de4fc91a 100644 --- a/seaweed-worker/Cargo.lock +++ b/seaweed-worker/Cargo.lock @@ -394,28 +394,6 @@ dependencies = [ "syn 2.0.119", ] -[[package]] -name = "async-stream" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.119", -] - [[package]] name = "async-trait" version = "0.1.92" @@ -701,7 +679,7 @@ dependencies = [ "rustls-pki-types", "tokio", "tokio-rustls", - "tower 0.5.3", + "tower", "tracing", ] @@ -856,13 +834,13 @@ dependencies = [ [[package]] name = "axum" -version = "0.7.9" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" dependencies = [ - "async-trait", "axum-core", "bytes", + "form_urlencoded", "futures-util", "http 1.5.0", "http-body 1.1.0", @@ -875,14 +853,13 @@ dependencies = [ "mime", "percent-encoding", "pin-project-lite", - "rustversion", - "serde", + "serde_core", "serde_json", "serde_path_to_error", "serde_urlencoded", "sync_wrapper", "tokio", - "tower 0.5.3", + "tower", "tower-layer", "tower-service", "tracing", @@ -890,19 +867,17 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ - "async-trait", "bytes", - "futures-util", + "futures-core", "http 1.5.0", "http-body 1.1.0", "http-body-util", "mime", "pin-project-lite", - "rustversion", "sync_wrapper", "tower-layer", "tower-service", @@ -1965,7 +1940,7 @@ dependencies = [ "indexmap 2.14.0", "itertools", "parking_lot", - "petgraph 0.8.3", + "petgraph", "tokio", ] @@ -2793,7 +2768,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.5", + "socket2", "tokio", "tower-service", "tracing", @@ -3249,9 +3224,9 @@ dependencies = [ "object_store", "permutation", "pin-project", - "prost 0.14.4", - "prost-build 0.14.4", - "prost-types 0.14.4", + "prost", + "prost-build", + "prost-types", "rand 0.9.5", "rayon", "roaring", @@ -3357,7 +3332,7 @@ dependencies = [ "num_cpus", "object_store", "pin-project", - "prost 0.14.4", + "prost", "quick_cache", "rand 0.9.5", "roaring", @@ -3398,8 +3373,8 @@ dependencies = [ "lance-datagen", "log", "pin-project", - "prost 0.14.4", - "prost-build 0.14.4", + "prost", + "prost-build", "tokio", "tracing", ] @@ -3461,8 +3436,8 @@ dependencies = [ "log", "lz4", "num-traits", - "prost 0.14.4", - "prost-build 0.14.4", + "prost", + "prost-build", "rand 0.9.5", "strum", "tokio", @@ -3497,9 +3472,9 @@ dependencies = [ "log", "num-traits", "object_store", - "prost 0.14.4", - "prost-build 0.14.4", - "prost-types 0.14.4", + "prost", + "prost-build", + "prost-types", "tokio", "tracing", ] @@ -3554,9 +3529,9 @@ dependencies = [ "ndarray", "num-traits", "object_store", - "prost 0.14.4", - "prost-build 0.14.4", - "prost-types 0.14.4", + "prost", + "prost-build", + "prost-types", "rand 0.9.5", "rand_distr", "rangemap", @@ -3590,7 +3565,7 @@ dependencies = [ "lance-core", "lance-io", "lance-select", - "prost-types 0.14.4", + "prost-types", "roaring", "serde", "serde_json", @@ -3624,7 +3599,7 @@ dependencies = [ "opendal", "path_abs", "pin-project", - "prost 0.14.4", + "prost", "rand 0.9.5", "serde", "tempfile", @@ -3719,9 +3694,9 @@ dependencies = [ "lance-select", "log", "object_store", - "prost 0.14.4", - "prost-build 0.14.4", - "prost-types 0.14.4", + "prost", + "prost-build", + "prost-types", "rand 0.9.5", "rangemap", "roaring", @@ -3938,9 +3913,9 @@ dependencies = [ [[package]] name = "matchit" -version = "0.7.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "matrixmultiply" @@ -4411,16 +4386,6 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df202b0b0f5b8e389955afd5f27b007b00fb948162953f1db9c70d2c7e3157d7" -[[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap 2.14.0", -] - [[package]] name = "petgraph" version = "0.8.3" @@ -4563,16 +4528,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "prost" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" -dependencies = [ - "bytes", - "prost-derive 0.13.5", -] - [[package]] name = "prost" version = "0.14.4" @@ -4580,27 +4535,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528ac67416ff8646872a3c02cad9cc4ee5dc9f9540c9b10771855c95cb2e5ae1" dependencies = [ "bytes", - "prost-derive 0.14.4", -] - -[[package]] -name = "prost-build" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" -dependencies = [ - "heck", - "itertools", - "log", - "multimap", - "once_cell", - "petgraph 0.7.1", - "prettyplease", - "prost 0.13.5", - "prost-types 0.13.5", - "regex", - "syn 2.0.119", - "tempfile", + "prost-derive", ] [[package]] @@ -4613,28 +4548,17 @@ dependencies = [ "itertools", "log", "multimap", - "petgraph 0.8.3", + "petgraph", "prettyplease", - "prost 0.14.4", - "prost-types 0.14.4", + "prost", + "prost-types", + "pulldown-cmark", + "pulldown-cmark-to-cmark", "regex", "syn 2.0.119", "tempfile", ] -[[package]] -name = "prost-derive" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" -dependencies = [ - "anyhow", - "itertools", - "proc-macro2", - "quote", - "syn 2.0.119", -] - [[package]] name = "prost-derive" version = "0.14.4" @@ -4648,22 +4572,13 @@ dependencies = [ "syn 2.0.119", ] -[[package]] -name = "prost-types" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" -dependencies = [ - "prost 0.13.5", -] - [[package]] name = "prost-types" version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f94967dc7688f3054c7fac87473ffae4cc4c3904800e2d9f5b857246d8963b0a" dependencies = [ - "prost 0.14.4", + "prost", ] [[package]] @@ -4730,6 +4645,26 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95067976aca6421a523e491fce939a3e65249bac4b977adee0ee9771568e8aa3" +[[package]] +name = "pulldown-cmark" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f068eba8e7071c5f9511831b44f32c740d5adf574e990f946ddb53db2f314e" +dependencies = [ + "bitflags 2.13.1", + "memchr", + "unicase", +] + +[[package]] +name = "pulldown-cmark-to-cmark" +version = "22.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab1ad36992cead65f02aa399a373a42730922f1525d988172634fdefdecb8a60" +dependencies = [ + "pulldown-cmark", +] + [[package]] name = "quick-xml" version = "0.39.4" @@ -4775,7 +4710,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", - "socket2 0.6.5", + "socket2", "thiserror 2.0.20", "tokio", "tracing", @@ -4814,7 +4749,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.5", + "socket2", "tracing", "windows-sys 0.61.2", ] @@ -4846,24 +4781,13 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" -[[package]] -name = "rand" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - [[package]] name = "rand" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" dependencies = [ - "rand_chacha 0.9.0", + "rand_chacha", "rand_core 0.9.5", ] @@ -4878,16 +4802,6 @@ dependencies = [ "rand_core 0.10.1", ] -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - [[package]] name = "rand_chacha" version = "0.9.0" @@ -4898,15 +4812,6 @@ dependencies = [ "rand_core 0.9.5", ] -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.17", -] - [[package]] name = "rand_core" version = "0.9.5" @@ -5160,7 +5065,7 @@ dependencies = [ "tokio", "tokio-rustls", "tokio-util", - "tower 0.5.3", + "tower", "tower-http", "tower-service", "url", @@ -5199,7 +5104,7 @@ dependencies = [ "tokio", "tokio-rustls", "tokio-util", - "tower 0.5.3", + "tower", "tower-http", "tower-service", "url", @@ -5309,15 +5214,6 @@ dependencies = [ "security-framework", ] -[[package]] -name = "rustls-pemfile" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "rustls-pki-types" version = "1.15.1" @@ -5441,13 +5337,14 @@ dependencies = [ "async-trait", "axum", "prometheus", - "prost 0.13.5", - "prost-types 0.13.5", + "prost", + "prost-types", "protoc-bin-vendored", "tokio", "tokio-stream", "tonic", - "tonic-build", + "tonic-prost", + "tonic-prost-build", "tracing", ] @@ -5723,16 +5620,6 @@ dependencies = [ "syn 2.0.119", ] -[[package]] -name = "socket2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - [[package]] name = "socket2" version = "0.6.5" @@ -6027,7 +5914,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.5", + "socket2", "tokio-macros", "windows-sys 0.61.2", ] @@ -6081,11 +5968,10 @@ dependencies = [ [[package]] name = "tonic" -version = "0.12.3" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +checksum = "ac2a5518c70fa84342385732db33fb3f44bc4cc748936eb5833d2df34d6445ef" dependencies = [ - "async-stream", "async-trait", "axum", "base64 0.22.1", @@ -6099,13 +5985,12 @@ dependencies = [ "hyper-util", "percent-encoding", "pin-project", - "prost 0.13.5", - "rustls-pemfile", - "socket2 0.5.10", + "socket2", + "sync_wrapper", "tokio", "tokio-rustls", "tokio-stream", - "tower 0.4.13", + "tower", "tower-layer", "tower-service", "tracing", @@ -6113,36 +5998,41 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.12.3" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" +checksum = "c68f61875ac5293cf72e6c8cf0158086428c82c37229e98c840878f1706b0322" dependencies = [ "prettyplease", "proc-macro2", - "prost-build 0.13.5", - "prost-types 0.13.5", "quote", "syn 2.0.119", ] [[package]] -name = "tower" -version = "0.4.13" +name = "tonic-prost" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "50849f68853be452acf590cde0b146665b8d507b3b8af17261df47e02c209ea0" dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project", - "pin-project-lite", - "rand 0.8.7", - "slab", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", + "bytes", + "prost", + "tonic", +] + +[[package]] +name = "tonic-prost-build" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "654e5643eff75d7f8c99197ce1440ed19a3474eada74c12bbac488b2cafdae27" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost-build", + "prost-types", + "quote", + "syn 2.0.119", + "tempfile", + "tonic-build", ] [[package]] @@ -6153,9 +6043,12 @@ checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", + "indexmap 2.14.0", "pin-project-lite", + "slab", "sync_wrapper", "tokio", + "tokio-util", "tower-layer", "tower-service", "tracing", @@ -6178,7 +6071,7 @@ dependencies = [ "pin-project-lite", "tokio", "tokio-util", - "tower 0.5.3", + "tower", "tower-layer", "tower-service", "url", diff --git a/seaweed-worker/Cargo.toml b/seaweed-worker/Cargo.toml index ffe69fc4f..41b0dd13d 100644 --- a/seaweed-worker/Cargo.toml +++ b/seaweed-worker/Cargo.toml @@ -17,9 +17,6 @@ edition = "2024" rust-version = "1.94.1" [workspace.lints.clippy] -# Every RPC path returns tonic::Status (176 bytes). Boxing it would change -# every handler signature for no gain, so the large-Err lint is off. -result_large_err = "allow" # Protobuf message literals keep `..Default::default()` on purpose: it is # what lets a proto gain a field without touching every constructor. needless_update = "allow" @@ -27,14 +24,15 @@ needless_update = "allow" [workspace.dependencies] anyhow = "1" async-trait = "0.1" -prost = "0.13" -prost-types = "0.13" +prost = "0.14" +prost-types = "0.14" tokio = { version = "1", features = ["full"] } tokio-stream = "0.1" -tonic = { version = "0.12", features = ["tls"] } +tonic = { version = "0.14", features = ["tls-aws-lc"] } +tonic-prost = "0.14" # Already in the tree via tonic; named here so the metrics server can use them. -axum = "0.7" +axum = "0.8" prometheus = { version = "0.13", default-features = false } -tonic-build = "0.12" +tonic-prost-build = "0.14" tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } diff --git a/seaweed-worker/crates/core/Cargo.toml b/seaweed-worker/crates/core/Cargo.toml index a94641afd..227f090f6 100644 --- a/seaweed-worker/crates/core/Cargo.toml +++ b/seaweed-worker/crates/core/Cargo.toml @@ -16,12 +16,13 @@ prost-types.workspace = true tokio.workspace = true tokio-stream.workspace = true tonic.workspace = true +tonic-prost.workspace = true axum.workspace = true prometheus.workspace = true tracing.workspace = true [build-dependencies] -tonic-build.workspace = true +tonic-prost-build.workspace = true # Ships protoc with the build so neither CI nor a developer needs a system # install, and so the version is pinned rather than whatever the platform's # package manager happens to carry. The same crate seaweed-volume uses. diff --git a/seaweed-worker/crates/core/build.rs b/seaweed-worker/crates/core/build.rs index f76f0fdab..e775fcb81 100644 --- a/seaweed-worker/crates/core/build.rs +++ b/seaweed-worker/crates/core/build.rs @@ -14,7 +14,7 @@ fn main() -> Result<(), Box> { // Compiled straight out of the Go tree, the way seaweed-volume already reads // filer.proto, so the contract cannot drift from a vendored copy. - tonic_build::configure() + tonic_prost_build::configure() // The server half is only for tests, which stand up a fake admin. .build_server(true) .build_client(true)