MagicStack / MagicStack/asyncpg
asyncpg.exceptions._base.InterfaceError: cannot call Connection.fetch(): connection has been released back to the pool
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 8.1k
- Forks
- 468
- PR merge metrics
- No merged PRs in 30d
Description
* **asyncpg version**: 0.26.0
* **PostgreSQL version**: 12.0
* **Do you use a PostgreSQL SaaS? If so, which? Can you reproduce : NO, from pg docker
the issue with a local PostgreSQL install?**: YES,
* **Python version**: Python 3.9.13
* **Platform**: MAC
* **Do you use pgbouncer?**: No
* **Did you install asyncpg with pip?**: From tortoise-orm
* **If you built asyncpg locally, which version of Cython did you use?**: No
* **Can the issue be reproduced under both asyncio and
[uvloop](https://github.com/magicstack/uvloop)?**: YES
I am using Sanic + tortoise-orm,
the test code as below:

when runs a query during the Request handler, it runs successfully
while runs in a background task, it report this error:
`asyncpg.exceptions._base.InterfaceError: cannot call Connection.fetch(): connection has been released back to the pool
`
I found when the first time query, through the pool.acquire, got the right 0x7fd3d018e550>
but when go to the background task query , the pool.acquire, got an "released"
I am confused how can I got an released PoolConnectionProxy from the same code
[query in the get Request method]

[query in the background task]

[the pool connection acquire method]

[the pool connection release method]

Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Sanic and tortoise-orm request-handler versus background-task examples in the issue, then trace the pool.acquire and pool release paths shown in the screenshots. Reproduce the released PoolConnectionProxy error if possible and determine whether the background query uses a connection after release; done means the cause and a project-side fix or confirmed usage issue are documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- postgresql, python
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100