Add connet_timeout and idle_timeout to the user (#634)

* Add connect_timeout to the user

* Allow user to override connect timeout

* version

* lock

* Add both timeouts to the user
This commit is contained in:
Lev Kokotov
2023-11-06 12:18:52 -08:00
committed by GitHub
parent b52ea8e7f1
commit dae240d30c
6 changed files with 38 additions and 6 deletions

View File

@@ -79,6 +79,8 @@ impl AuthPassthrough {
pool_mode: None,
server_lifetime: None,
min_pool_size: None,
connect_timeout: None,
idle_timeout: None,
};
let user = &address.username;

View File

@@ -216,6 +216,8 @@ pub struct User {
pub server_lifetime: Option<u64>,
#[serde(default)] // 0
pub statement_timeout: u64,
pub connect_timeout: Option<u64>,
pub idle_timeout: Option<u64>,
}
impl Default for User {
@@ -230,6 +232,8 @@ impl Default for User {
statement_timeout: 0,
pool_mode: None,
server_lifetime: None,
connect_timeout: None,
idle_timeout: None,
}
}
}
@@ -1307,6 +1311,24 @@ impl Config {
None => "default".to_string(),
}
);
info!(
"[pool: {}][user: {}] Connection timeout: {}",
pool_name,
user.1.username,
match user.1.connect_timeout {
Some(connect_timeout) => format!("{}ms", connect_timeout),
None => "not set".to_string(),
}
);
info!(
"[pool: {}][user: {}] Idle timeout: {}",
pool_name,
user.1.username,
match user.1.idle_timeout {
Some(idle_timeout) => format!("{}ms", idle_timeout),
None => "not set".to_string(),
}
);
}
}
}

View File

@@ -436,14 +436,20 @@ impl ConnectionPool {
pool_config.prepared_statements_cache_size,
);
let connect_timeout = match pool_config.connect_timeout {
let connect_timeout = match user.connect_timeout {
Some(connect_timeout) => connect_timeout,
None => config.general.connect_timeout,
None => match pool_config.connect_timeout {
Some(connect_timeout) => connect_timeout,
None => config.general.connect_timeout,
},
};
let idle_timeout = match pool_config.idle_timeout {
let idle_timeout = match user.idle_timeout {
Some(idle_timeout) => idle_timeout,
None => config.general.idle_timeout,
None => match pool_config.idle_timeout {
Some(idle_timeout) => idle_timeout,
None => config.general.idle_timeout,
},
};
let server_lifetime = match user.server_lifetime {