Configure acquire timeout for connection pool (#897)
* Reproduce "failed to acquire connection from pool" error * Configure acquire_timeout * Add tests * Fixup * Remove tests
This commit is contained in:
parent
6f7529b0be
commit
968fc2e678
@ -38,6 +38,8 @@ pub struct ConnectOptions {
|
|||||||
/// Maximum idle time for a particular connection to prevent
|
/// Maximum idle time for a particular connection to prevent
|
||||||
/// network resource exhaustion
|
/// network resource exhaustion
|
||||||
pub(crate) idle_timeout: Option<Duration>,
|
pub(crate) idle_timeout: Option<Duration>,
|
||||||
|
/// Set the maximum amount of time to spend waiting for acquiring a connection
|
||||||
|
pub(crate) acquire_timeout: Option<Duration>,
|
||||||
/// Set the maximum lifetime of individual connections
|
/// Set the maximum lifetime of individual connections
|
||||||
pub(crate) max_lifetime: Option<Duration>,
|
pub(crate) max_lifetime: Option<Duration>,
|
||||||
/// Enable SQLx statement logging
|
/// Enable SQLx statement logging
|
||||||
@ -107,6 +109,7 @@ impl ConnectOptions {
|
|||||||
min_connections: None,
|
min_connections: None,
|
||||||
connect_timeout: None,
|
connect_timeout: None,
|
||||||
idle_timeout: None,
|
idle_timeout: None,
|
||||||
|
acquire_timeout: None,
|
||||||
max_lifetime: None,
|
max_lifetime: None,
|
||||||
sqlx_logging: true,
|
sqlx_logging: true,
|
||||||
sqlx_logging_level: log::LevelFilter::Info,
|
sqlx_logging_level: log::LevelFilter::Info,
|
||||||
@ -137,6 +140,9 @@ impl ConnectOptions {
|
|||||||
if let Some(idle_timeout) = self.idle_timeout {
|
if let Some(idle_timeout) = self.idle_timeout {
|
||||||
opt = opt.idle_timeout(Some(idle_timeout));
|
opt = opt.idle_timeout(Some(idle_timeout));
|
||||||
}
|
}
|
||||||
|
if let Some(acquire_timeout) = self.acquire_timeout {
|
||||||
|
opt = opt.acquire_timeout(acquire_timeout);
|
||||||
|
}
|
||||||
if let Some(max_lifetime) = self.max_lifetime {
|
if let Some(max_lifetime) = self.max_lifetime {
|
||||||
opt = opt.max_lifetime(Some(max_lifetime));
|
opt = opt.max_lifetime(Some(max_lifetime));
|
||||||
}
|
}
|
||||||
@ -192,6 +198,17 @@ impl ConnectOptions {
|
|||||||
self.idle_timeout
|
self.idle_timeout
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Set the maximum amount of time to spend waiting for acquiring a connection
|
||||||
|
pub fn acquire_timeout(&mut self, value: Duration) -> &mut Self {
|
||||||
|
self.acquire_timeout = Some(value);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get the maximum amount of time to spend waiting for acquiring a connection
|
||||||
|
pub fn get_acquire_timeout(&self) -> Option<Duration> {
|
||||||
|
self.acquire_timeout
|
||||||
|
}
|
||||||
|
|
||||||
/// Set the maximum lifetime of individual connections
|
/// Set the maximum lifetime of individual connections
|
||||||
pub fn max_lifetime(&mut self, lifetime: Duration) -> &mut Self {
|
pub fn max_lifetime(&mut self, lifetime: Duration) -> &mut Self {
|
||||||
self.max_lifetime = Some(lifetime);
|
self.max_lifetime = Some(lifetime);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user