Skip to content

Alembic migration fails with enable statement_cache_size #777

@sc0rp10

Description

@sc0rp10

Hello!

Recently we've installed PgDog and have been trying to test it with our workload. Now we're stuck on a broken Alembic migration that prevents application startup. Once we enable prepared statements, the crash appears, so it looks like this bug is somehow connected to PgDog and prepared statements.

It returns a somewhat strange message that doesn't correspond to reality. The desired record exists in the alembic_version table, so it looks completely strange.

A bit more details:

traceback
ERROR:    Traceback (most recent call last):
  File "/app/.venv/lib/python3.13/site-packages/alembic/script/base.py", line 213, in _catch_revision_errors
    yield
  File "/app/.venv/lib/python3.13/site-packages/alembic/script/base.py", line 421, in _upgrade_revs
    for script in reversed(list(revs))
                           ~~~~^^^^^^
  File "/app/.venv/lib/python3.13/site-packages/alembic/script/revision.py", line 814, in iterate_revisions
    revisions, heads = fn(
                       ~~^
        upper,
        ^^^^^^
    ...<3 lines>...
        assert_relative_length=assert_relative_length,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/app/.venv/lib/python3.13/site-packages/alembic/script/revision.py", line 1475, in _collect_upgrade_revisions
    current_revisions = self.get_revisions(lower)
  File "/app/.venv/lib/python3.13/site-packages/alembic/script/revision.py", line 542, in get_revisions
    return sum([self.get_revisions(id_elem) for id_elem in id_], ())
                ~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/app/.venv/lib/python3.13/site-packages/alembic/script/revision.py", line 565, in get_revisions
    return tuple(
        self._revision_for_ident(rev_id, branch_label)
        for rev_id in resolved_id
    )
  File "/app/.venv/lib/python3.13/site-packages/alembic/script/revision.py", line 566, in <genexpr>
    self._revision_for_ident(rev_id, branch_label)
    ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
  File "/app/.venv/lib/python3.13/site-packages/alembic/script/revision.py", line 637, in _revision_for_ident
    raise ResolutionError(
    ...<11 lines>...
    )
alembic.script.revision.ResolutionError: No such revision or branch '005_add_service_environments'

The sqlalchemy configuration is deadly simple

config
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine

from src.config import settings

# Create async engine with connection pooling
engine = create_async_engine(
    settings.DATABASE_URL,
    echo=False,
    pool_size=10,
    max_overflow=20,
    connect_args={"statement_cache_size": 100}, # <<< setting this value greater than 0 breaks everything
)
pgdog.toml
[general]
host = "0.0.0.0"
port = 5432
pooler_mode = "transaction"
default_pool_size = 5
openmetrics_port = 9187

[[databases]]
name = "foo"
host = "postgres-misc.foo.svc.cluster.local"
port = 5432
database_name = "foo"
role = "primary"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions