iercan opened a new issue, #29728:
URL: https://github.com/apache/superset/issues/29728
### Bug description
I'm testing version 4.1.0rc1, but migration fails due to unreachable
databases, resulting in the following error:
```
Loaded your LOCAL configuration at [/app/pythonpath/superset_config.py]
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
INFO [alembic.runtime.migration] Running upgrade 17fcea065655 ->
be1b217cd8cd, big_number_kpi_single_metric
INFO [alembic.runtime.migration] Running upgrade be1b217cd8cd ->
678eefb4ab44, Add access token table
INFO [alembic.runtime.migration] Running upgrade 678eefb4ab44 ->
c22cb5c2e546, empty message
INFO [alembic.runtime.migration] Running upgrade c22cb5c2e546 ->
5ad7321c2169, mig new csv upload perm
INFO [alembic.runtime.migration] Running upgrade 5ad7321c2169 ->
d60591c5515f, mig new excel upload perm
INFO [alembic.runtime.migration] Running upgrade d60591c5515f ->
5f57af97bc3f, Add catalog column
INFO [alembic.runtime.migration] Running upgrade 5f57af97bc3f ->
3dfd0e78650e, add_query_sql_editor_id_index
INFO [alembic.runtime.migration] Running upgrade 5f57af97bc3f ->
4a33124c18ad, mig new columnar upload perm
INFO [alembic.runtime.migration] Running upgrade 4a33124c18ad ->
58d051681a3b, Add catalog_perm to tables
Traceback (most recent call last):
File "/app/superset/migrations/shared/catalogs.py", line 177, in
upgrade_schema_perms
schemas = database.get_all_schema_names(
File "/app/superset/utils/cache.py", line 127, in wrapped_f
return f(*args, **kwargs)
File "/app/superset/models/core.py", line 846, in get_all_schema_names
raise self.db_engine_spec.get_dbapi_mapped_exception(ex) from ex
File "/app/superset/models/core.py", line 840, in get_all_schema_names
with self.get_inspector(
File "/usr/local/lib/python3.10/contextlib.py", line 135, in __enter__
return next(self.gen)
File "/app/superset/models/core.py", line 820, in get_inspector
yield sqla.inspect(engine)
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/inspection.py",
line 64, in inspect
ret = reg(subject)
File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/reflection.py", line
182, in _engine_insp
return Inspector._construct(Inspector._init_engine, bind)
File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/reflection.py", line
117, in _construct
init(self, bind)
File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/reflection.py", line
128, in _init_engine
engine.connect().close()
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 3325, in connect
return self._connection_cls(self, close_with_result=close_with_result)
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 96, in __init__
else engine.raw_connection()
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 3404, in raw_connection
return self._wrap_pool_connect(self.pool.connect, _connection)
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 3374, in _wrap_pool_connect
Connection._handle_dbapi_exception_noconnection(
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 2208, in _handle_dbapi_exception_noconnection
util.raise_(
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py",
line 211, in raise_
raise exception
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 3371, in _wrap_pool_connect
return fn()
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/pool/base.py",
line 327, in connect
return _ConnectionFairy._checkout(self)
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/pool/base.py",
line 894, in _checkout
fairy = _ConnectionRecord.checkout(pool)
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/pool/base.py",
line 493, in checkout
rec = pool._do_get()
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/pool/impl.py",
line 256, in _do_get
return self._create_connection()
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/pool/base.py",
line 273, in _create_connection
return _ConnectionRecord(self)
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/pool/base.py",
line 388, in __init__
self.__connect()
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/pool/base.py",
line 690, in __connect
with util.safe_reraise():
File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/util/langhelpers.py", line
70, in __exit__
compat.raise_(
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py",
line 211, in raise_
raise exception
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/pool/base.py",
line 686, in __connect
self.dbapi_connection = connection = pool._invoke_creator(self)
File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/create.py", line
574, in connect
return dialect.connect(*cargs, **cparams)
File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line
598, in connect
return self.dbapi.connect(*cargs, **cparams)
File
"/app/superset_home/.local/lib/python3.10/site-packages/psycopg2/__init__.py",
line 122, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not
translate host name "poodahslave03" to address: Name or service not known
(Background on this error at: https://sqlalche.me/e/14/e3q8)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File
"/app/superset_home/.local/lib/python3.10/site-packages/MySQLdb/cursors.py",
line 200, in _mogrify
query = query % args
TypeError: not enough arguments for format string
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1910, in _execute_context
self.dialect.do_execute(
File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line
736, in do_execute
cursor.execute(statement, parameters)
File
"/app/superset_home/.local/lib/python3.10/site-packages/MySQLdb/cursors.py",
line 176, in execute
mogrified_query = self._mogrify(query, args)
File
"/app/superset_home/.local/lib/python3.10/site-packages/MySQLdb/cursors.py",
line 202, in _mogrify
raise ProgrammingError(str(m))
MySQLdb.ProgrammingError: not enough arguments for format string
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/bin/superset", line 8, in <module>
sys.exit(superset())
File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1157,
in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1078,
in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1688,
in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1688,
in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1434,
in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.10/site-packages/click/core.py", line 783, in
invoke
return __callback(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/click/decorators.py", line
33, in new_func
return f(get_current_context(), *args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/flask/cli.py", line 358, in
decorator
return __ctx.invoke(f, *args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/click/core.py", line 783, in
invoke
return __callback(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/flask_migrate/cli.py", line
149, in upgrade
_upgrade(directory, revision, sql, tag, x_arg)
File "/usr/local/lib/python3.10/site-packages/flask_migrate/__init__.py",
line 98, in wrapped
f(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/flask_migrate/__init__.py",
line 185, in upgrade
command.upgrade(config, revision, sql=sql, tag=tag)
File "/usr/local/lib/python3.10/site-packages/alembic/command.py", line
403, in upgrade
script.run_env()
File "/usr/local/lib/python3.10/site-packages/alembic/script/base.py",
line 583, in run_env
util.load_python_file(self.dir, "env.py")
File "/usr/local/lib/python3.10/site-packages/alembic/util/pyfiles.py",
line 95, in load_python_file
module = load_module_py(module_id, path)
File "/usr/local/lib/python3.10/site-packages/alembic/util/pyfiles.py",
line 113, in load_module_py
spec.loader.exec_module(module) # type: ignore
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "/app/superset/extensions/../migrations/env.py", line 127, in <module>
run_migrations_online()
File "/app/superset/extensions/../migrations/env.py", line 119, in
run_migrations_online
context.run_migrations()
File "<string>", line 8, in run_migrations
File
"/usr/local/lib/python3.10/site-packages/alembic/runtime/environment.py", line
948, in run_migrations
self.get_context().run_migrations(**kw)
File
"/usr/local/lib/python3.10/site-packages/alembic/runtime/migration.py", line
627, in run_migrations
step.migration_fn(**kw)
File
"/app/superset/migrations/versions/2024-05-01_10-52_58d051681a3b_add_catalog_perm_to_tables.py",
line 47, in upgrade
upgrade_catalog_perms(engines={"postgresql"})
File "/app/superset/migrations/shared/catalogs.py", line 139, in
upgrade_catalog_perms
upgrade_schema_perms(database, catalog, session)
File "/app/superset/migrations/shared/catalogs.py", line 183, in
upgrade_schema_perms
schemas = get_schemas(database.database_name)
File "/app/superset/migrations/shared/catalogs.py", line 106, in
get_schemas
return sorted({row[0].split(".")[-1][1:-1] for row in
conn.execute(query)})
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1370, in execute
return self._exec_driver_sql(
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1674, in _exec_driver_sql
ret = self._execute_context(
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1953, in _execute_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 2134, in _handle_dbapi_exception
util.raise_(
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py",
line 211, in raise_
raise exception
File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1910, in _execute_context
self.dialect.do_execute(
File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line
736, in do_execute
cursor.execute(statement, parameters)
File
"/app/superset_home/.local/lib/python3.10/site-packages/MySQLdb/cursors.py",
line 176, in execute
mogrified_query = self._mogrify(query, args)
File
"/app/superset_home/.local/lib/python3.10/site-packages/MySQLdb/cursors.py",
line 202, in _mogrify
raise ProgrammingError(str(m))
sqlalchemy.exc.ProgrammingError: (MySQLdb.ProgrammingError) not enough
arguments for format string
[SQL:
SELECT
avm.name
FROM ab_view_menu avm
JOIN ab_permission_view apv ON avm.id = apv.view_menu_id
JOIN ab_permission ap ON apv.permission_id = ap.id
WHERE
avm.name LIKE '[Druid Postgresql]%' AND
ap.name = 'schema_access';
]
(Background on this error at: https://sqlalche.me/e/14/f405)
```
### How to reproduce the bug
1. Be sure you have a unreachable database.
2. Attempt to migrate to 4.1.0rc1
### Screenshots/recordings
_No response_
### Superset version
master / latest-dev
### Python version
3.9
### Node version
16
### Browser
Chrome
### Additional context
_No response_
### Checklist
- [X] I have searched Superset docs and Slack and didn't find a solution to
my problem.
- [X] I have searched the GitHub issue tracker and didn't find a similar bug
report.
- [X] I have checked Superset's logs for errors and if I found a relevant
Python stacktrace, I included it here as text in the "additional context"
section.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]