typelevel / skunk

A data access library for Scala + Postgres.
https://typelevel.org/skunk/
MIT License
1.59k stars 163 forks source link

Deadlock while using session pool #1042

Closed bcarter97 closed 8 months ago

bcarter97 commented 9 months ago

I have encountered a deadlock when using the session pool. This happens when I attempt to use multiple sessions from the pool in parallel and the connection to PG fails. I have a minimal example here including logs/fiber dump that shows the waiting fibers in Skunk. If my understanding is correct, reading in parallel should be possible as the pool#use internally uses a semaphore to control permits, but these don’t seem to be being released properly on a connection failure. Could someone please advise if this is an implementation issue, or a bug with the library?

https://github.com/bcarter97/skunk-session-pool-parallel-deadlock

mpilquist commented 8 months ago

Thanks for reporting with a great reproduction case. I opened a draft PR with a fix but still need to reproduce in a unit test before merging.