refactor: Added min idle and max lifetime for database config (#2900)

Co-authored-by: akshay.s <akshay.s@juspay.in>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Gnanasundari24 <118818938+Gnanasundari24@users.noreply.github.com>
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
akshay-97
2023-11-28 18:58:46 +05:30
committed by GitHub
parent bd889c834d
commit b3c51e6eb5
6 changed files with 14 additions and 1 deletions

View File

@ -20,6 +20,7 @@ port = 5432
dbname = "hyperswitch_db"
pool_size = 5
connection_timeout = 10
min_idle = 2
[replica_database]
username = "db_user"

View File

@ -30,6 +30,8 @@ impl Default for super::settings::Database {
pool_size: 5,
connection_timeout: 10,
queue_strategy: Default::default(),
min_idle: None,
max_lifetime: None,
}
}
}

View File

@ -64,6 +64,8 @@ impl KmsDecrypt for settings::Database {
pool_size: self.pool_size,
connection_timeout: self.connection_timeout,
queue_strategy: self.queue_strategy.into(),
min_idle: self.min_idle,
max_lifetime: self.max_lifetime,
})
}
}

View File

@ -517,6 +517,8 @@ pub struct Database {
pub pool_size: u32,
pub connection_timeout: u64,
pub queue_strategy: QueueStrategy,
pub min_idle: Option<u32>,
pub max_lifetime: Option<u64>,
}
#[derive(Debug, Deserialize, Clone, Default)]
@ -548,6 +550,8 @@ impl From<Database> for storage_impl::config::Database {
pool_size: val.pool_size,
connection_timeout: val.connection_timeout,
queue_strategy: val.queue_strategy.into(),
min_idle: val.min_idle,
max_lifetime: val.max_lifetime,
}
}
}

View File

@ -10,4 +10,6 @@ pub struct Database {
pub pool_size: u32,
pub connection_timeout: u64,
pub queue_strategy: bb8::QueueStrategy,
pub min_idle: Option<u32>,
pub max_lifetime: Option<u64>,
}

View File

@ -88,8 +88,10 @@ pub async fn diesel_make_pg_pool(
let manager = async_bb8_diesel::ConnectionManager::<PgConnection>::new(database_url);
let mut pool = bb8::Pool::builder()
.max_size(database.pool_size)
.min_idle(database.min_idle)
.queue_strategy(database.queue_strategy)
.connection_timeout(std::time::Duration::from_secs(database.connection_timeout));
.connection_timeout(std::time::Duration::from_secs(database.connection_timeout))
.max_lifetime(database.max_lifetime.map(std::time::Duration::from_secs));
if test_transaction {
pool = pool.connection_customizer(Box::new(TestTransaction));