From a6c29c90d757112f0cfa6f54ccd6e2b26612a458 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Cig=C3=A1nek?= Date: Tue, 22 Jun 2021 17:30:36 +0200 Subject: [PATCH] Fix race condition in Pool::acquire --- sqlx-core/src/pool/inner.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sqlx-core/src/pool/inner.rs b/sqlx-core/src/pool/inner.rs index f9e5df43b3..be326e0aea 100644 --- a/sqlx-core/src/pool/inner.rs +++ b/sqlx-core/src/pool/inner.rs @@ -184,6 +184,10 @@ impl SharedPool { future::poll_fn(|cx| -> Poll<()> { let waiter = waiter.get_or_insert_with(|| Waiter::push_new(cx, &self.waiters)); + if !self.idle_conns.is_empty() { + return Poll::Ready(()); + } + if waiter.is_woken() { waiter.actually_woke = true; Poll::Ready(())