Skip to content

SNOW-2149491: Alembic autogenerate workflow breaks with get_multi_indexes() #595

@jasonkoverantos

Description

@jasonkoverantos

We have observed a regression in our alembic migration workflow recently. Now, when we try to autogenerate an alembic revision, we are getting the error:

INFO  [alembic.runtime.migration] Context impl SnowflakeImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
Traceback (most recent call last):
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/bin/alembic", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/config.py", line 988, in main
    CommandLine(prog=prog).main(argv=argv)
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/config.py", line 978, in main
    self.run_cmd(cfg, options)
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/config.py", line 912, in run_cmd
    fn(
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/command.py", line 309, in revision
    script_directory.run_env()
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/script/base.py", line 551, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/util/pyfiles.py", line 114, in load_python_file
    module = load_module_py(module_id, path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/util/pyfiles.py", line 134, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap_external>", line 999, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/migrations/alembic/env.py", line 160, in <module>
    run_migrations_online()
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/migrations/alembic/env.py", line 154, in run_migrations_online
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/runtime/environment.py", line 946, in run_migrations
    self.get_context().run_migrations(**kw)
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/runtime/migration.py", line 611, in run_migrations
    for step in self._migrations_fn(heads, self):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/command.py", line 285, in retrieve_migrations
    revision_context.run_autogenerate(rev, context)
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/autogenerate/api.py", line 570, in run_autogenerate
    self._run_environment(rev, migration_context, True)
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/autogenerate/api.py", line 617, in _run_environment
    compare._populate_migration_script(
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/autogenerate/compare.py", line 66, in _populate_migration_script
    _produce_net_changes(autogen_context, upgrade_ops)
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/autogenerate/compare.py", line 99, in _produce_net_changes
    comparators.dispatch("schema", autogen_context.dialect.name)(
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/util/langhelpers.py", line 310, in go
    fn(*arg, **kw)
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/autogenerate/compare.py", line 138, in _autogen_for_tables
    _compare_tables(
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/autogenerate/compare.py", line 250, in _compare_tables
    _InspectorConv(inspector).reflect_table(t, include_columns=None)
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/alembic/autogenerate/compare.py", line 483, in reflect_table
    self.inspector.reflect_table(table, include_columns=include_columns)
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/sqlalchemy/engine/reflection.py", line 1536, in reflect_table
    _reflect_info = self._get_reflection_info(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/sqlalchemy/engine/reflection.py", line 2024, in _get_reflection_info
    indexes=run(self.get_multi_indexes),
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/sqlalchemy/engine/reflection.py", line 2005, in run
    res = meth(filter_names=_fn, **kw)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/sqlalchemy/engine/reflection.py", line 1195, in get_multi_indexes
    self.dialect.get_multi_indexes(
  File "/Users/jko/Core-Product/verantos-evidence-platform/libs/backend/core/migrations/.venv/lib/python3.12/site-packages/snowflake/sqlalchemy/snowdialect.py", line 958, in get_multi_indexes
    indexes[(schema, table_name)] = indexes[(schema, table_name)].append(
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'append'

Has anything changed with the get_multi_indexes() functionality recently?

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingmaintenance_modeIssue was raised during maintenance mode thus could not be addressed.status-triage_doneInitial triage done, will be further handled by the driver team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions