From faa88e1558ad1560f22773653f5092ec554eb926 Mon Sep 17 00:00:00 2001 From: Denis Cornehl Date: Wed, 13 Sep 2023 14:12:15 +0200 Subject: [PATCH] compiles --- src/bin/cratesfyi.rs | 6 +++++- src/db/pool.rs | 14 +++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/bin/cratesfyi.rs b/src/bin/cratesfyi.rs index 4461daf88..14c931af3 100644 --- a/src/bin/cratesfyi.rs +++ b/src/bin/cratesfyi.rs @@ -802,7 +802,11 @@ impl Context for BinContext { Ok(self .pool .get_or_try_init::<_, Error>(|| { - Ok(Pool::new(&*self.config()?, self.instance_metrics()?)?) + Ok(Pool::new( + &*self.config()?, + &*self.runtime()?, + self.instance_metrics()?, + )?) })? .clone()) } diff --git a/src/db/pool.rs b/src/db/pool.rs index 9f3a74d69..e0788b89f 100644 --- a/src/db/pool.rs +++ b/src/db/pool.rs @@ -5,6 +5,7 @@ use r2d2_postgres::PostgresConnectionManager; use sqlx::postgres::PgPoolOptions; use sqlx::Executor; use std::sync::Arc; +use tokio::runtime::Runtime; use tracing::debug; pub type PoolClient = r2d2::PooledConnection>; @@ -24,24 +25,30 @@ pub struct Pool { } impl Pool { - pub fn new(config: &Config, metrics: Arc) -> Result { + pub fn new( + config: &Config, + runtime: &Runtime, + metrics: Arc, + ) -> Result { debug!( "creating database pool (if this hangs, consider running `docker-compose up -d db s3`)" ); - Self::new_inner(config, metrics, DEFAULT_SCHEMA) + Self::new_inner(config, runtime, metrics, DEFAULT_SCHEMA) } #[cfg(test)] pub(crate) fn new_with_schema( config: &Config, + runtime: &Runtime, metrics: Arc, schema: &str, ) -> Result { - Self::new_inner(config, metrics, schema) + Self::new_inner(config, runtime, metrics, schema) } fn new_inner( config: &Config, + runtime: &Runtime, metrics: Arc, schema: &str, ) -> Result { @@ -57,6 +64,7 @@ impl Pool { .build(manager) .map_err(PoolError::PoolCreationFailed)?; + let _guard = runtime.enter(); let async_pool = PgPoolOptions::new() .max_connections(config.max_pool_size) .min_connections(config.min_pool_idle)