change global allocator and fix some services

This commit is contained in:
Jun Kurihara 2022-07-11 21:00:21 +09:00
commit 9f6b73a7c0
No known key found for this signature in database
GPG key ID: 48ADFD173ED22B03
3 changed files with 28 additions and 18 deletions

View file

@ -17,10 +17,10 @@ h3 = ["quinn"]
[dependencies]
anyhow = "1.0.58"
clap = { version = "3.2.6", features = ["std", "cargo", "wrap_help"] }
clap = { version = "3.2.8", features = ["std", "cargo", "wrap_help"] }
env_logger = "0.9.0"
futures = "0.3.21"
hyper = { version = "0.14.19", default-features = false, features = [
hyper = { version = "0.14.20", default-features = false, features = [
"server",
"http1",
"http2",
@ -41,7 +41,7 @@ rustls = "0.20.6"
rand = "0.8.5"
toml = "0.5.9"
rustc-hash = "1.1.0"
serde = { version = "1.0.137", features = ["derive"] }
serde = { version = "1.0.139", features = ["derive"] }
hyper-rustls = { version = "0.23.0", default-features = false, features = [
"tokio-runtime",
"webpki-tokio",
@ -52,9 +52,7 @@ quinn = { version = "0.8.3", optional = true }
h3 = { git = "https://github.com/hyperium/h3.git" }
h3-quinn = { git = "https://github.com/hyperium/h3.git" }
bytes = "1.1.0"
[target.'cfg(not(target_env = "msvc"))'.dependencies]
tikv-jemallocator = "0.5.0"
mimalloc-rust = "0.2.0"
[dev-dependencies]
@ -66,3 +64,4 @@ incremental = false
lto = "fat"
opt-level = 3
panic = "abort"
strip = true

View file

@ -1,6 +1,6 @@
#[cfg(not(target_env = "msvc"))]
use mimalloc_rust::*;
#[global_allocator]
static GLOBAL: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc;
static GLOBAL_MIMALLOC: GlobalMiMalloc = GlobalMiMalloc;
mod backend;
mod backend_opt;

View file

@ -209,39 +209,50 @@ where
#[cfg(not(feature = "h3"))]
{
select! {
_= self.cert_service(tx) => {
_= self.cert_service(tx).fuse() => {
error!("Cert service for TLS exited");
},
_ = self.listener_service(server, rx) => {
_ = self.listener_service(server, rx).fuse() => {
error!("TCP proxy service for TLS exited");
},
complete => {
error!("Something went wrong");
return Ok(())
}
};
Ok(())
}
#[cfg(feature = "h3")]
{
if self.globals.http3 {
tokio::select! {
_= self.cert_service(tx) => {
select! {
_= self.cert_service(tx).fuse() => {
error!("Cert service for TLS exited");
},
_ = self.listener_service(server, rx.clone()) => {
_ = self.listener_service(server, rx.clone()).fuse() => {
error!("TCP proxy service for TLS exited");
},
_= self.listener_service_h3(rx) => {
_= self.listener_service_h3(rx).fuse() => {
error!("UDP proxy service for QUIC exited");
},
complete => {
error!("Something went wrong");
return Ok(())
}
};
Ok(())
} else {
tokio::select! {
_= self.cert_service(tx) => {
select! {
_= self.cert_service(tx).fuse() => {
error!("Cert service for TLS exited");
},
_ = self.listener_service(server, rx) => {
_ = self.listener_service(server, rx).fuse() => {
error!("TCP proxy service for TLS exited");
},
complete => {
error!("Something went wrong");
return Ok(())
}
};
Ok(())
}