diff --git a/src/persistence.rs b/src/persistence.rs index 8c1f1fa..497e72e 100644 --- a/src/persistence.rs +++ b/src/persistence.rs @@ -37,10 +37,10 @@ impl GossipPersister where L::Target: Logger { } pub(crate) async fn persist_gossip(&mut self) { - let mut client = crate::connect_to_db().await; + { // initialize the database + // this client instance is only used once + let mut client = crate::connect_to_db().await; - { - // initialize the database let initialization = client .execute(config::db_config_table_creation_query(), &[]) .await; @@ -122,14 +122,17 @@ impl GossipPersister where L::Target: Logger { insert_limiter.acquire().await.unwrap().forget(); let limiter_ref = Arc::clone(&insert_limiter); - let connections_cache_ref = Arc::clone(&connections_cache); + let client = { + let connections_cache_ref = Arc::clone(&connections_cache); - let mut connections_set = connections_cache_ref.lock().await; - let client = if connections_set.is_empty() { - drop(connections_set); - crate::connect_to_db().await - } else { - connections_set.pop().unwrap() + let mut connections_set = connections_cache_ref.lock().await; + let client = if connections_set.is_empty() { + drop(connections_set); + crate::connect_to_db().await + } else { + connections_set.pop().unwrap() + }; + client }; let connections_cache_ref = Arc::clone(&connections_cache);