fix: restore finally block in handle_db_errors to prevent connection leaks (#38)

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 <noreply@anthropic.com>
This commit is contained in:
Cal Corum 2026-03-07 02:01:48 -06:00
parent 7734e558a9
commit 55bf035db0

View File

@ -800,6 +800,14 @@ def handle_db_errors(func):
logger.info(f"Database rollback successful for {func_name}") logger.info(f"Database rollback successful for {func_name}")
except Exception as rollback_error: except Exception as rollback_error:
logger.error(f"Rollback failed in {func_name}: {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( raise HTTPException(
status_code=500, detail=f"Database error in {func_name}: {str(e)}" status_code=500, detail=f"Database error in {func_name}: {str(e)}"