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:
Kian Jones
2026-02-13 12:19:03 -08:00
committed by Caren Thomas
parent 0a8a8fda54
commit 2f0294165c

View File

@@ -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: