Skip to content

Commit 7865ccc

Browse files
authored
Upgrade hyperlane (#9701)
* 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
1 parent 00a00a9 commit 7865ccc

File tree

10 files changed

+27
-41
lines changed

10 files changed

+27
-41
lines changed

frameworks/Rust/hyperlane/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "hyperlane_techempower"
33
version = "0.0.1"
4-
edition = "2021"
4+
edition = "2024"
55
authors = ["ltpp-universe <[email protected]>"]
66
license = "MIT"
77
description = """Hyperlane is a lightweight and high-performance Rust HTTP server library designed to simplify network service development. It supports HTTP request parsing, response building, and TCP communication, making it ideal for building modern web services. Additionally, it provides support for request and response middleware, WebSocket, and Server-Sent Events (SSE), enabling flexible and efficient real-time communication."""
@@ -18,7 +18,7 @@ exclude = [
1818
]
1919

2020
[dependencies]
21-
hyperlane = "4.36.1"
21+
hyperlane = "4.42.1"
2222
rand = "0.9.0"
2323
serde = "1.0.219"
2424
sqlx = { version = "0.8.3", features = ["runtime-tokio", "postgres"] }

frameworks/Rust/hyperlane/hyperlane.dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
FROM rust:1.85
22

3+
RUN apt-get update -yqq && apt-get install -yqq cmake g++ binutils lld
4+
35
ENV POSTGRES_URL=postgres://benchmarkdbuser:benchmarkdbpass@tfb-database:5432/hello_world
46

57
ADD ./ /hyperlane_techempower
68
WORKDIR /hyperlane_techempower
79

810
RUN cargo clean
9-
RUN RUSTFLAGS="-C target-cpu=native" cargo build --release
11+
RUN RUSTFLAGS="-C target-cpu=native -C link-arg=-fuse-ld=lld" cargo build --release
1012

1113
EXPOSE 8080
1214

frameworks/Rust/hyperlane/src/db.rs

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,18 @@ use crate::*;
22

33
#[inline]
44
pub async fn get_db_connection() -> DbPoolConnection {
5-
if let Some(db_pool) = DB.read().await.clone() {
6-
return db_pool;
5+
if let Some(db_pool) = DB.get() {
6+
return db_pool.clone();
77
};
88
let db_pool: DbPoolConnection = connection_db().await;
9-
{
10-
let mut db_pool_lock: RwLockWriteGuard<'_, Option<DbPoolConnection>> = DB.write().await;
11-
*db_pool_lock = Some(db_pool.clone());
12-
}
9+
DB.set(db_pool.clone())
10+
.expect("Failed to initialize DB_POOL");
1311
db_pool
1412
}
1513

1614
#[inline]
1715
#[cfg(feature = "dev")]
18-
pub async fn create_batabase() {
16+
pub async fn create_database() {
1917
let db_pool: DbPoolConnection = get_db_connection().await;
2018
let _ = query(&format!("CREATE DATABASE {};", DATABASE_NAME))
2119
.execute(&db_pool)
@@ -97,8 +95,7 @@ pub async fn init_cache() {
9795
res.push(QueryRow::new(id, random_number));
9896
}
9997
}
100-
let mut cache: RwLockWriteGuard<'_, Vec<QueryRow>> = CACHE.write().await;
101-
*cache = res;
98+
let _ = CACHE.set(res);
10299
}
103100

104101
#[inline]
@@ -170,13 +167,10 @@ pub async fn get_update_data(
170167

171168
#[inline]
172169
pub async fn init_db() {
173-
{
174-
let mut db_pool_lock: RwLockWriteGuard<'_, Option<DbPoolConnection>> = DB.write().await;
175-
*db_pool_lock = Some(connection_db().await);
176-
}
170+
get_db_connection().await;
177171
#[cfg(feature = "dev")]
178172
{
179-
create_batabase().await;
173+
create_database().await;
180174
create_table().await;
181175
insert_records().await;
182176
}

frameworks/Rust/hyperlane/src/lazy.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use crate::*;
22

3-
pub static DB: Lazy<ArcRwLock<Option<DbPoolConnection>>> =
4-
Lazy::new(|| Arc::new(RwLock::new(None)));
5-
pub static CACHE: Lazy<ArcRwLock<Vec<QueryRow>>> = Lazy::new(|| arc_rwlock(vec![]));
3+
pub static DB: OnceCell<DbPoolConnection> = OnceCell::new();
4+
pub static CACHE: OnceCell<Vec<QueryRow>> = OnceCell::new();

frameworks/Rust/hyperlane/src/main.rs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,9 @@ pub(crate) mod utils;
1010

1111
pub(crate) use constant::*;
1212
pub(crate) use db::*;
13-
pub(crate) use hyperlane::{
14-
once_cell::sync::Lazy,
15-
serde::*,
16-
serde_json::json,
17-
tokio::sync::{RwLock, RwLockReadGuard, RwLockWriteGuard},
18-
*,
19-
};
13+
pub(crate) use hyperlane::{once_cell::sync::OnceCell, serde::*, serde_json::json, *};
2014
pub(crate) use lazy::*;
21-
pub(crate) use r#type::*;
22-
pub(crate) use rand::{rngs::SmallRng, Rng, SeedableRng};
15+
pub(crate) use rand::{Rng, SeedableRng, rng, rngs::SmallRng};
2316
pub(crate) use request_middleware::*;
2417
pub(crate) use response_middleware::*;
2518
pub(crate) use route::*;
@@ -28,7 +21,8 @@ pub(crate) use sqlx::{
2821
postgres::{PgPoolOptions, PgRow},
2922
*,
3023
};
31-
pub(crate) use std::{fmt, sync::Arc};
24+
pub(crate) use std::fmt;
25+
pub(crate) use r#type::*;
3226
pub(crate) use utils::*;
3327

3428
#[tokio::main]

frameworks/Rust/hyperlane/src/route.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ pub async fn cached_queries(controller_data: ControllerData) {
9797
.min(ROW_LIMIT as Queries)
9898
.max(1);
9999
let mut res: Vec<QueryRow> = Vec::with_capacity(count as usize);
100-
let cache: RwLockReadGuard<'_, Vec<QueryRow>> = CACHE.read().await;
100+
let cache: Vec<QueryRow> = CACHE.get().cloned().unwrap_or_default();
101101
for i in 0..count {
102102
res.push(cache[i as usize].clone());
103103
}

frameworks/Rust/hyperlane/src/server.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ pub async fn run_server() {
99
server.log_interval_millis(1_000_000_000).await;
1010
server.disable_inner_log().await;
1111
server.disable_inner_print().await;
12-
server.route("/json", json).await;
1312
server.route("/plaintext", plaintext).await;
13+
server.route("/json", json).await;
14+
server.route("/cached-quer", cached_queries).await;
1415
server.route("/db", db).await;
1516
server.route("/query", queries).await;
1617
server.route("/fortunes", fortunes).await;
1718
server.route("/upda", updates).await;
18-
server.route("/cached-quer", cached_queries).await;
1919
server.request_middleware(request).await;
2020
server.response_middleware(response).await;
2121
server.listen().await;

frameworks/Rust/hyperlane/src/type.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,13 @@ impl FortunesTemplate {
4444
}
4545

4646
impl fmt::Display for FortunesTemplate {
47+
#[inline]
4748
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4849
let fortunes: &Vec<Fortunes> = &self.0;
49-
let _ = write!(f, "<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>");
50+
let _ = write!(
51+
f,
52+
"<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>"
53+
);
5054
for tem in fortunes.iter() {
5155
let row: String = format!(
5256
"<tr><td>{}</td><td>{}</td></tr>",

frameworks/Rust/hyperlane/src/utils.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
use rand::rng;
2-
31
use crate::*;
42

53
#[inline]

frameworks/Rust/hyperlane/templates/fortune.hbs

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)