Pārlūkot izejas kodu

Upgrade hyperlane (#9825)

* feat: update & fortune

* feat: randomNumber

* feat: max row 500

* feat: update

* feat: Fortune

* feat: fortunes

* feat: update

* feat: update

* feat: update

* feat: update

* feat: fortunes

* feat: fortunes

* feat: fortunes

* feat: fortunes

* feat: fortunes

* feat: fortunes

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: cache

* feat: cache

* feat: config

* feat: config

* feat: config

* feat: v4.36.1

* docs: readme

* feat: remove dyn

* docs: readme

* feat: lock

* feat: lock

* feat: lock

* feat: lock

* feat: db pool

* feat: db pool

* feat: lock

* feat: lock

* feat: db

* feat: db

* feat: db

* feat: db

* feat: db

* feat: db

* feat: db

* feat: db

* feat: rand

* feat: rand

* feat: rand

* feat: rand

* feat: rand

* feat: port

* feat: port

* feat: port

* feat: db

* feat: db

* feat: db

* feat: lock

* feat: lock

* feat: v4.41.0

* feat: v4.42.0

* Merge remote-tracking branch 'upstream/master'

* Merge remote-tracking branch 'upstream/master'

* feat: inline

* feat: dockerfile

* feat: v4.52.1

* feat: remove key

* remove: log

* remove: log

* feat: async

* remove: empty loop

* feat: utf8

* change: pool_size

* remove: utf8

* feat: log

* feat: log

* feat: v3.14.1

* feat: 4.56.3

* feat: 4.56.4

* feat: 4.56.5

* feat:  rename

* Merge branch 'master' of github.com:TechEmpower/FrameworkBenchmarks

* feat: speed

* feat: speed

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* feat: runtime

* feat: runtime

* feat: runtime

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* feat: update

* Merge remote-tracking branch 'upstream/master'

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update
尤雨东 4 mēneši atpakaļ
vecāks
revīzija
c29f3d9031

+ 38 - 37
frameworks/Rust/hyperlane/Cargo.lock

@@ -324,9 +324,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
 
 [[package]]
 name = "errno"
-version = "0.3.10"
+version = "0.3.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d"
+checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e"
 dependencies = [
  "libc",
  "windows-sys 0.59.0",
@@ -655,9 +655,9 @@ checksum = "c978c76917568ef84ce5020d6b1fa49ce74a4dd65bc290b93b1355a81aebdb9e"
 
 [[package]]
 name = "http-type"
-version = "3.63.0"
+version = "3.64.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b636cec6e80b206725f9bf79c36ebccbee37ead35fdbca1b7583ee99f495a602"
+checksum = "228db23663f214e42497ed0fc66ddab4c7fea8039998823e49d516f559a92e5f"
 dependencies = [
  "ahash",
  "dashmap",
@@ -682,9 +682,9 @@ dependencies = [
 
 [[package]]
 name = "hyperlane"
-version = "4.84.0"
+version = "4.86.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "65f71c235dd571f014fc5426a30f9f4ba42cf341007e4dc2797eec75da16c36d"
+checksum = "97c0552d7d2f270ca1fec64766617809aa82b86ad4424d8c31515ed79d2f121e"
 dependencies = [
  "async-func",
  "clonelicious",
@@ -726,7 +726,6 @@ name = "hyperlane_techempower"
 version = "0.0.1"
 dependencies = [
  "hyperlane",
- "num_cpus",
  "rand 0.9.0",
  "serde",
  "sqlx",
@@ -873,9 +872,9 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.8.0"
+version = "2.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058"
+checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e"
 dependencies = [
  "equivalent",
  "hashbrown 0.15.2",
@@ -930,9 +929,9 @@ dependencies = [
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.9.3"
+version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413"
+checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
 
 [[package]]
 name = "litemap"
@@ -985,9 +984,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
 
 [[package]]
 name = "miniz_oxide"
-version = "0.8.5"
+version = "0.8.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5"
+checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a"
 dependencies = [
  "adler2",
 ]
@@ -1274,9 +1273,9 @@ dependencies = [
 
 [[package]]
 name = "redox_syscall"
-version = "0.5.10"
+version = "0.5.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1"
+checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3"
 dependencies = [
  "bitflags",
 ]
@@ -1329,9 +1328,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
 
 [[package]]
 name = "rustix"
-version = "1.0.3"
+version = "1.0.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e56a18552996ac8d29ecc3b190b4fdbb2d91ca4ec396de7bbffaf43f3d637e96"
+checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf"
 dependencies = [
  "bitflags",
  "errno",
@@ -1490,18 +1489,18 @@ dependencies = [
 
 [[package]]
 name = "smallvec"
-version = "1.14.0"
+version = "1.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
+checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9"
 dependencies = [
  "serde",
 ]
 
 [[package]]
 name = "socket2"
-version = "0.5.8"
+version = "0.5.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8"
+checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef"
 dependencies = [
  "libc",
  "windows-sys 0.52.0",
@@ -1528,9 +1527,9 @@ dependencies = [
 
 [[package]]
 name = "sqlx"
-version = "0.8.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4410e73b3c0d8442c5f99b425d7a435b5ee0ae4167b3196771dd3f7a01be745f"
+checksum = "14e22987355fbf8cfb813a0cf8cd97b1b4ec834b94dbd759a9e8679d41fabe83"
 dependencies = [
  "sqlx-core",
  "sqlx-macros",
@@ -1541,10 +1540,11 @@ dependencies = [
 
 [[package]]
 name = "sqlx-core"
-version = "0.8.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a007b6936676aa9ab40207cde35daab0a04b823be8ae004368c0793b96a61e0"
+checksum = "55c4720d7d4cd3d5b00f61d03751c685ad09c33ae8290c8a2c11335e0604300b"
 dependencies = [
+ "base64",
  "bytes",
  "crc",
  "crossbeam-queue",
@@ -1574,9 +1574,9 @@ dependencies = [
 
 [[package]]
 name = "sqlx-macros"
-version = "0.8.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3112e2ad78643fef903618d78cf0aec1cb3134b019730edb039b69eaf531f310"
+checksum = "175147fcb75f353ac7675509bc58abb2cb291caf0fd24a3623b8f7e3eb0a754b"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1587,9 +1587,9 @@ dependencies = [
 
 [[package]]
 name = "sqlx-macros-core"
-version = "0.8.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e9f90acc5ab146a99bf5061a7eb4976b573f560bc898ef3bf8435448dd5e7ad"
+checksum = "1cde983058e53bfa75998e1982086c5efe3c370f3250bf0357e344fa3352e32b"
 dependencies = [
  "dotenvy",
  "either",
@@ -1613,9 +1613,9 @@ dependencies = [
 
 [[package]]
 name = "sqlx-mysql"
-version = "0.8.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4560278f0e00ce64938540546f59f590d60beee33fffbd3b9cd47851e5fff233"
+checksum = "847d2e5393a4f39e47e4f36cab419709bc2b83cbe4223c60e86e1471655be333"
 dependencies = [
  "atoi",
  "base64",
@@ -1655,9 +1655,9 @@ dependencies = [
 
 [[package]]
 name = "sqlx-postgres"
-version = "0.8.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5b98a57f363ed6764d5b3a12bfedf62f07aa16e1856a7ddc2a0bb190a959613"
+checksum = "cc35947a541b9e0a2e3d85da444f1c4137c13040267141b208395a0d0ca4659f"
 dependencies = [
  "atoi",
  "base64",
@@ -1692,9 +1692,9 @@ dependencies = [
 
 [[package]]
 name = "sqlx-sqlite"
-version = "0.8.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f85ca71d3a5b24e64e1d08dd8fe36c6c95c339a896cc33068148906784620540"
+checksum = "6c48291dac4e5ed32da0927a0b981788be65674aeb62666d19873ab4289febde"
 dependencies = [
  "atoi",
  "flume",
@@ -1709,6 +1709,7 @@ dependencies = [
  "serde",
  "serde_urlencoded",
  "sqlx-core",
+ "thiserror 2.0.12",
  "tracing",
  "url",
 ]
@@ -2268,9 +2269,9 @@ checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
 
 [[package]]
 name = "xml-rs"
-version = "0.8.25"
+version = "0.8.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5b940ebc25896e71dd073bad2dbaa2abfe97b0a391415e22ad1326d9c54e3c4"
+checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda"
 
 [[package]]
 name = "yoke"

+ 1 - 2
frameworks/Rust/hyperlane/Cargo.toml

@@ -18,8 +18,7 @@ exclude = [
 ]
 
 [dependencies]
-hyperlane = "4.84.0"
-num_cpus = "1.16.0"
+hyperlane = "4.86.0"
 rand = "0.9.0"
 serde = "1.0.219"
 sqlx = { version = "0.8.3", features = ["runtime-tokio", "postgres"] }

+ 17 - 0
frameworks/Rust/hyperlane/src/const.rs

@@ -0,0 +1,17 @@
+pub const RESPONSEDATA_STR: &str = "Hello, World!";
+pub const RESPONSEDATA_BIN: &[u8] = b"Hello, World!";
+pub const DATABASE_TYPE: &str = "postgres";
+pub const DATABASE_HOST: &str = "tfb-database";
+pub const DATABASE_USER_NAME: &str = "benchmarkdbuser";
+pub const DATABASE_USER_PASSWORD: &str = "benchmarkdbpass";
+pub const DATABASE_PORT: usize = 5_432;
+pub const DATABASE_NAME: &str = "hello_world";
+pub const TABLE_NAME_WORLD: &str = "World";
+pub const TABLE_NAME_FORTUNE: &str = "Fortune";
+pub const ROW_LIMIT: i32 = 500;
+pub const RANDOM_MAX: i32 = 10_000;
+pub const RANDOM_MAX_ADD_ONE: u32 = 10_001;
+pub const KEY_ID: &str = "id";
+pub const KEY_RANDOM_NUMBER: &str = "randomnumber";
+pub const KEY_MESSAGE: &str = "message";
+pub const DB_MAX_CONNECTIONS: u32 = 100;

+ 0 - 16
frameworks/Rust/hyperlane/src/constant.rs

@@ -1,16 +0,0 @@
-pub static RESPONSEDATA_STR: &str = "Hello, World!";
-pub static RESPONSEDATA_BIN: &[u8] = b"Hello, World!";
-pub static DATABASE_TYPE: &str = "postgres";
-pub static DATABASE_HOST: &str = "tfb-database";
-pub static DATABASE_USER_NAME: &str = "benchmarkdbuser";
-pub static DATABASE_USER_PASSWORD: &str = "benchmarkdbpass";
-pub static DATABASE_PORT: usize = 5_432;
-pub static DATABASE_NAME: &str = "hello_world";
-pub static TABLE_NAME_WORLD: &str = "World";
-pub static TABLE_NAME_FORTUNE: &str = "Fortune";
-pub static ROW_LIMIT: i32 = 500;
-pub static RANDOM_MAX: i32 = 10_000;
-pub static RANDOM_MAX_ADD_ONE: u32 = 10_001;
-pub static KEY_ID: &str = "id";
-pub static KEY_RANDOM_NUMBER: &str = "randomnumber";
-pub static KEY_MESSAGE: &str = "message";

+ 2 - 2
frameworks/Rust/hyperlane/src/db.rs

@@ -100,9 +100,9 @@ pub async fn connection_db() -> DbPoolConnection {
             DATABASE_NAME
         ),
     };
-    let pool_size: u32 = num_cpus::get() as u32;
+    let pool_size: u32 = (get_thread_count() as u32).min(DB_MAX_CONNECTIONS);
     let pool: DbPoolConnection = PgPoolOptions::new()
-        .max_connections(100)
+        .max_connections(DB_MAX_CONNECTIONS)
         .min_connections(pool_size)
         .max_lifetime(None)
         .test_before_acquire(false)

+ 2 - 4
frameworks/Rust/hyperlane/src/main.rs

@@ -1,14 +1,13 @@
-pub(crate) mod constant;
+pub(crate) mod r#const;
 pub(crate) mod db;
 pub(crate) mod lazy;
 pub(crate) mod request_middleware;
-pub(crate) mod response_middleware;
 pub(crate) mod route;
 pub(crate) mod server;
 pub(crate) mod r#type;
 pub(crate) mod utils;
 
-pub(crate) use constant::*;
+pub(crate) use r#const::*;
 pub(crate) use db::*;
 pub(crate) use hyperlane::{
     futures::{executor::block_on, future::join_all},
@@ -21,7 +20,6 @@ pub(crate) use hyperlane::{
 pub(crate) use lazy::*;
 pub(crate) use rand::{Rng, SeedableRng, rng, rngs::SmallRng};
 pub(crate) use request_middleware::*;
-pub(crate) use response_middleware::*;
 pub(crate) use route::*;
 pub(crate) use server::*;
 pub(crate) use sqlx::{

+ 0 - 2
frameworks/Rust/hyperlane/src/request_middleware.rs

@@ -9,7 +9,5 @@ pub async fn request(ctx: Context) {
         .set_response_header(SERVER, HYPERLANE)
         .await
         .set_response_header(DATE, gmt())
-        .await
-        .set_response_status_code(200)
         .await;
 }

+ 0 - 5
frameworks/Rust/hyperlane/src/response_middleware.rs

@@ -1,5 +0,0 @@
-use crate::*;
-
-pub async fn response(ctx: Context) {
-    let _ = ctx.send().await;
-}

+ 9 - 8
frameworks/Rust/hyperlane/src/route.rs

@@ -5,7 +5,7 @@ pub async fn json(ctx: Context) {
         "message": RESPONSEDATA_STR
     });
     let _ = ctx
-        .set_response_body(serde_json::to_string(&json).unwrap_or_default())
+        .send_response(200, serde_json::to_string(&json).unwrap_or_default())
         .await;
 }
 
@@ -13,7 +13,7 @@ pub async fn plaintext(ctx: Context) {
     let _ = ctx
         .set_response_header(CONTENT_TYPE, TEXT_PLAIN)
         .await
-        .set_response_body(RESPONSEDATA_BIN)
+        .send_response(200, RESPONSEDATA_BIN)
         .await;
 }
 
@@ -21,7 +21,7 @@ pub async fn db(ctx: Context) {
     let db_connection: &DbPoolConnection = get_db_connection();
     let query_row: QueryRow = random_world_row(db_connection).await;
     let _ = ctx
-        .set_response_body(serde_json::to_string(&query_row).unwrap_or_default())
+        .send_response(200, serde_json::to_string(&query_row).unwrap_or_default())
         .await;
 }
 
@@ -36,7 +36,7 @@ pub async fn queries(ctx: Context) {
     let db_pool: &DbPoolConnection = get_db_connection();
     let data: Vec<QueryRow> = get_some_row_id(queries, db_pool).await;
     let _ = ctx
-        .set_response_body(serde_json::to_string(&data).unwrap_or_default())
+        .send_response(200, serde_json::to_string(&data).unwrap_or_default())
         .await;
 }
 
@@ -56,9 +56,10 @@ pub async fn fortunes(ctx: Context) {
     ));
     fortunes_list.sort_by(|it, next| it.message.cmp(&next.message));
     let res: String = FortunesTemplate::new(fortunes_list).to_string();
-    ctx.set_response_header(CONTENT_TYPE, content_type_charset(TEXT_HTML, UTF8))
+    let _ = ctx
+        .set_response_header(CONTENT_TYPE, content_type_charset(TEXT_HTML, UTF8))
         .await
-        .set_response_body(res)
+        .send_response(200, res)
         .await;
 }
 
@@ -72,7 +73,7 @@ pub async fn updates(ctx: Context) {
         .max(1);
     let res: Vec<QueryRow> = update_world_rows(queries).await;
     let _ = ctx
-        .set_response_body(serde_json::to_string(&res).unwrap_or_default())
+        .send_response(200, serde_json::to_string(&res).unwrap_or_default())
         .await;
 }
 
@@ -86,6 +87,6 @@ pub async fn cached_queries(ctx: Context) {
         .max(1);
     let res: Vec<QueryRow> = CACHE.iter().take(count as usize).cloned().collect();
     let _ = ctx
-        .set_response_body(serde_json::to_string(&res).unwrap_or_default())
+        .send_response(200, serde_json::to_string(&res).unwrap_or_default())
         .await;
 }

+ 5 - 6
frameworks/Rust/hyperlane/src/server.rs

@@ -3,8 +3,8 @@ use tokio::runtime::{Builder, Runtime};
 
 fn runtime() -> Runtime {
     Builder::new_multi_thread()
-        .worker_threads(get_thread_count())
-        .thread_stack_size(2097152)
+        .worker_threads(get_thread_count() >> 1)
+        .thread_stack_size(1_048_576)
         .max_blocking_threads(5120)
         .max_io_events_per_tick(5120)
         .enable_all()
@@ -21,8 +21,9 @@ async fn init_server() {
     server.disable_log().await;
     server.disable_inner_log().await;
     server.disable_inner_print().await;
-    server.http_line_buffer_size(512).await;
-    server.websocket_buffer_size(512).await;
+    server.http_line_buffer_size(256).await;
+    server.websocket_buffer_size(256).await;
+    server.request_middleware(request).await;
     server.route("/plaintext", plaintext).await;
     server.route("/json", json).await;
     server.route("/cached-quer", cached_queries).await;
@@ -30,8 +31,6 @@ async fn init_server() {
     server.route("/query", queries).await;
     server.route("/fortunes", fortunes).await;
     server.route("/upda", updates).await;
-    server.request_middleware(request).await;
-    server.response_middleware(response).await;
     server.listen().await.unwrap();
 }