Skip to content

Commit 0c32efe

Browse files
committed
Only acquire as many permits as a child pool can offer
1 parent 396a757 commit 0c32efe

1 file changed

Lines changed: 11 additions & 1 deletion

File tree

sqlx-core/src/pool/inner.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,17 @@ impl<DB: Database> PoolInner<DB> {
9797
self.mark_closed();
9898

9999
async move {
100-
let _permits = self.semaphore.acquire(self.options.max_connections).await;
100+
// For child pools, we need to acquire permits we actually have rather than
101+
// max_connections
102+
let permits_to_acquire = if self.options.parent_pool.is_some() {
103+
// Child pools start with 0 permits, so we acquire based on current size
104+
self.size()
105+
} else {
106+
// Parent pools can acquire all max_connections permits
107+
self.options.max_connections
108+
};
109+
110+
let _permits = self.semaphore.acquire(permits_to_acquire).await;
101111

102112
while let Some(idle) = self.idle_conns.pop() {
103113
let _ = idle.live.raw.close().await;

0 commit comments

Comments
 (0)