debug: log statement_timeout + connection pid on session checkout (#9472)
* debug: log statement_timeout + connection pid on every session checkout Temporary instrumentation to diagnose why some PlanetScale connections have statement_timeout=5s while others have 0 (disabled). 🤖 Generated with [Letta Code](https://letta.com) Co-Authored-By: Letta <noreply@letta.com> * debug: log statement_timeout on every checkout, not just non-zero 🤖 Generated with [Letta Code](https://letta.com) Co-Authored-By: Letta <noreply@letta.com> * fix: rollback implicit transaction from debug query The SELECT implicitly begins a transaction, causing "A transaction is already begun" errors for code that calls session.begin() explicitly. 🤖 Generated with [Letta Code](https://letta.com) Co-Authored-By: Letta <noreply@letta.com> --------- Co-authored-by: Letta <noreply@letta.com>
This commit is contained in:
@@ -3,7 +3,7 @@ import uuid
|
||||
from contextlib import asynccontextmanager
|
||||
from typing import AsyncGenerator
|
||||
|
||||
from sqlalchemy import NullPool
|
||||
from sqlalchemy import NullPool, text
|
||||
from sqlalchemy.ext.asyncio import (
|
||||
AsyncEngine,
|
||||
AsyncSession,
|
||||
@@ -88,6 +88,10 @@ class DatabaseRegistry:
|
||||
try:
|
||||
async with async_session_factory() as session:
|
||||
try:
|
||||
result = await session.execute(text("SELECT pg_backend_pid(), current_setting('statement_timeout')"))
|
||||
pid, timeout = result.one()
|
||||
logger.warning(f"[stmt_timeout_debug] pid={pid} statement_timeout={timeout}")
|
||||
await session.rollback()
|
||||
yield session
|
||||
await session.commit()
|
||||
except asyncio.CancelledError:
|
||||
|
||||
Reference in New Issue
Block a user