From 2c02d1e55b4278f44dee480d1bbae8976fd408bd Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Fri, 20 Feb 2026 17:43:53 -0800 Subject: [PATCH] fix(proxy): narrow prisma db connection error classification --- litellm/proxy/db/exception_handler.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/litellm/proxy/db/exception_handler.py b/litellm/proxy/db/exception_handler.py index db73f9e9c93..bbc1564a487 100644 --- a/litellm/proxy/db/exception_handler.py +++ b/litellm/proxy/db/exception_handler.py @@ -38,8 +38,30 @@ class PrismaDBExceptionHandler: if isinstance(e, DB_CONNECTION_ERROR_TYPES): return True - if isinstance(e, prisma.errors.PrismaError): + if isinstance( + e, (prisma.errors.ClientNotConnectedError, prisma.errors.HTTPClientClosedError) + ): return True + if isinstance(e, prisma.errors.PrismaError): + error_message = str(e).lower() + # Treat generic PrismaError as connection error only when its text + # clearly indicates transport/connectivity failure. + connection_keywords = ( + "can't reach database server", + "cannot reach database server", + "can't connect", + "cannot connect", + "connection error", + "connection closed", + "timed out", + "timeout", + "connection refused", + "network is unreachable", + "no route to host", + "broken pipe", + ) + if any(keyword in error_message for keyword in connection_keywords): + return True if isinstance(e, ProxyException) and e.type == ProxyErrorTypes.no_db_connection: return True return False