tortoise/tortoise-orm

AssertionError while using transactions.in_transaction

DaniilChizhevskii opened this issue · 3 comments

Describe the bug
I use Tortoise ORM with FastAPI contrib and MySQL database. There are some places in my code where I use toirtoise.transactions.in_transaction and it causes this error sometimes:

AssertionError: (<aiomysql.connection.Connection object at 0x7ec4f3382120>, {<aiomysql.connection.Connection object at 0x7ec4f3d648f0>, <aiomysql.connection.Connection object at 0x7ec4f3d20530>, <aiomysql.connection.Connection object at 0x7ec4f3367b30>, <aiomysql.connection.Connection object at 0x7ec4f3364770>, <aiomysql.connection.Connection object at 0x7ec4f3d22ba0>})

I use multiple gunicorn workers and all of them having this issue simultaneously. Issue repeats several times an hour.

To Reproduce
Create FastAPI application with registered Tortoise:

from fastapi import FastAPI
from tortoise.contrib.fastapi import register_tortoise
app = FastAPI(title=...)
register_tortoise(app, config=..., generate_schemas=False, add_exception_handlers=False)

Add transaction somewhere in your routes:

async with transactions.in_transaction():
    ...

And MySQL connection:
mysql://root:password@localhost:3306/db

Expected behavior
App works normally, no exceptions got

Hi @DaniilChizhevskii, could you please tell how do you know that the error happens in in_transaction? Can you provide a stacktrace?