From 55bf035db0d402a74ed090c4990fb6a421edf8dd Mon Sep 17 00:00:00 2001 From: Cal Corum Date: Sat, 7 Mar 2026 02:01:48 -0600 Subject: [PATCH] fix: restore finally block in handle_db_errors to prevent connection leaks (#38) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer correctly identified that removing the finally block introduced real connection leaks for handlers that do not call db.close() on their own error paths. Peewee's PooledDatabase.close() is a no-op on the second call, so double-close is harmless — the finally block provides necessary safety net. Co-Authored-By: Claude Sonnet 4.6 --- app/dependencies.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/dependencies.py b/app/dependencies.py index 5c4d8f1..357354b 100644 --- a/app/dependencies.py +++ b/app/dependencies.py @@ -800,6 +800,14 @@ def handle_db_errors(func): logger.info(f"Database rollback successful for {func_name}") except Exception as rollback_error: logger.error(f"Rollback failed in {func_name}: {rollback_error}") + finally: + try: + db.close() + logger.info(f"Database connection closed for {func_name}") + except Exception as close_error: + logger.error( + f"Error closing database connection in {func_name}: {close_error}" + ) raise HTTPException( status_code=500, detail=f"Database error in {func_name}: {str(e)}"