Skip to content

Commit b406413

Browse files
committed
Potentially fixed memory leak
1 parent 6748384 commit b406413

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

xcap/db/manager.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,24 @@ def handle_notification(self, notification: Notification) -> None:
3232

3333
def create_engine(self, uri: DatabaseURI) -> AsyncEngine:
3434
if uri.startswith('sqlite'):
35-
return create_async_engine(uri, connect_args={"check_same_thread": False}, echo=False)
35+
engine = create_async_engine(uri, connect_args={"check_same_thread": False}, echo=False)
3636
elif uri.startswith('mysql'):
37-
return create_async_engine(uri, echo=False)
37+
engine = create_async_engine(uri, echo=False)
3838
else:
3939
raise ValueError("Unsupported database URI scheme")
4040

41+
@event.listens_for(engine.sync_engine, "handle_error")
42+
def handle_error(exc):
43+
original_exception = exc.original_exception
44+
exception_type = type(original_exception).__name__
45+
error_code = getattr(original_exception, 'args', [None, None])[0]
46+
error_message = getattr(original_exception, 'args', [None, None])[1]
47+
48+
log.error(f"{exception_type}: {error_code}, \"{error_message}\"")
49+
raise DBError
50+
51+
return engine
52+
4153
def configure_db_connection(self, uri: Optional[DatabaseURI] = None) -> None:
4254
""" Configure the database connection with the provided URI for Uvicorn """
4355
if uri and self.dburi == uri:

0 commit comments

Comments
 (0)