bmschow opened a new issue, #28044: URL: https://github.com/apache/superset/issues/28044
### Bug description
We are running Superset via helm chart (version 0.12.9) and running aurora
postgres on AWS as the database backend. In the UI we are able to successfully
test a connection. However, when we click "Connect" we receive a "Fatal
Error." When we check the pod, we get this stack trace:
```
Traceback (most recent call last):
│
│ superset File "/app/superset/commands/database/create.py", line 99, in
run
│
│ superset db.session.commit()
│
│ superset File "<string>", line 2, in commit
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 1435,
in commit
│
│ superset self._transaction.commit(_to_root=self.future)
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 829,
in commit
│
│ superset self._prepare_impl()
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 808,
in _prepare_impl
│
│ superset self.session.flush()
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 3367,
in flush
│
│ superset self._flush(objects)
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 3506,
in _flush
│
│ superset with util.safe_reraise():
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/util/langhelpers.py", line
70, in __exit__
│
│ superset compat.raise_(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 207,
in raise_
│
│ superset raise exception
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 3467,
in _flush
│
│ superset flush_context.execute()
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/unitofwork.py", line
456, in execute
│
│ superset rec.execute(self)
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/unitofwork.py", line
630, in execute
│
│ superset util.preloaded.orm_persistence.save_obj(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/persistence.py", line
245, in save_obj
│
│ superset _emit_insert_statements(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/persistence.py", line
1238, in _emit_insert_statements
│
│ superset result = connection._execute_20(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1631,
in _execute_20
│
│ superset return meth(self, args_10style, kwargs_10style,
execution_options)
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 325,
in _execute_on_connection
│
│ superset return connection._execute_clauseelement(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1498,
in _execute_clauseelement
│
│ superset ret = self._execute_context(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1725,
in _execute_context
│
│ superset self._handle_dbapi_exception(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2043,
in _handle_dbapi_exception
│
│ superset util.raise_(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 207,
in raise_
│
│ superset raise exception
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1719,
in _execute_context
│
│ superset context = constructor(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line
1091, in _init_compiled
│
│ superset param = {
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line
1092, in <dictcomp>
│
│ superset key: processors[key](compiled_params[key])
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/type_api.py", line
1631, in process
│
│ superset return impl_processor(process_param(value, dialect))
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy_utils/types/encrypted/encrypted_type.py",
line 471, in process_bind_param
│
│ superset value = super().process_bind_param(value=value,
dialect=dialect)
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy_utils/types/encrypted/encrypted_type.py",
line 397, in process_bind_param
│
│ superset self._update_key()
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy_utils/types/encrypted/encrypted_type.py",
line 392, in _update_key
│
│ superset self.engine._update_key(key)
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy_utils/types/encrypted/encrypted_type.py",
line 52, in _update_key
│
│ superset digest.update(key)
│
│ superset sqlalchemy.exc.StatementError: (builtins.TypeError) argument
'data': a bytes-like object is required, not 'tuple'
│
│ superset [SQL: INSERT INTO dbs (uuid, created_on, changed_on,
verbose_name, database_name, sqlalchemy_uri, password, cache_timeout,
select_as_create_table_as, expose_in_sqllab, configuration_method,
allow_run_async, allow_file_upload, allow_ │
│ superset [parameters: [{'configuration_method':
<ConfigurationMethod.DYNAMIC_FORM: 'dynamic_form'>, 'password': [redacted],
'sqlalchemy_uri': 'postgresql+psycop ... (213 characters truncated) ...
ows_virtual_table_explore":true}' │
│ superset
```
We have gotten this in helm chart installs locally as well (without AWS
hosted dbs) and have confirmed that the user can insert into the `dbs` table.
This behavior has been seen in attempting to create connections to both
Redshift and Postgres databases.
### How to reproduce the bug
Go to "Settings" -> "Database Connections" in the UI, then click on
"+Database".
Fill out the form to connect to a database, test the connection then press
"Connect". This is where the error pops up.
### Screenshots/recordings
_No response_
### Superset version
master / latest-dev
### Python version
3.9
### Node version
16
### Browser
Chrome
### Additional context
Traceback (most recent call last):
│
│ superset File "/app/superset/commands/database/create.py", line 99, in
run
│
│ superset db.session.commit()
│
│ superset File "<string>", line 2, in commit
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 1435,
in commit
│
│ superset self._transaction.commit(_to_root=self.future)
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 829,
in commit
│
│ superset self._prepare_impl()
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 808,
in _prepare_impl
│
│ superset self.session.flush()
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 3367,
in flush
│
│ superset self._flush(objects)
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 3506,
in _flush
│
│ superset with util.safe_reraise():
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/util/langhelpers.py", line
70, in __exit__
│
│ superset compat.raise_(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 207,
in raise_
│
│ superset raise exception
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 3467,
in _flush
│
│ superset flush_context.execute()
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/unitofwork.py", line
456, in execute
│
│ superset rec.execute(self)
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/unitofwork.py", line
630, in execute
│
│ superset util.preloaded.orm_persistence.save_obj(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/persistence.py", line
245, in save_obj
│
│ superset _emit_insert_statements(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/persistence.py", line
1238, in _emit_insert_statements
│
│ superset result = connection._execute_20(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1631,
in _execute_20
│
│ superset return meth(self, args_10style, kwargs_10style,
execution_options)
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 325,
in _execute_on_connection
│
│ superset return connection._execute_clauseelement(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1498,
in _execute_clauseelement
│
│ superset ret = self._execute_context(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1725,
in _execute_context
│
│ superset self._handle_dbapi_exception(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2043,
in _handle_dbapi_exception
│
│ superset util.raise_(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 207,
in raise_
│
│ superset raise exception
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1719,
in _execute_context
│
│ superset context = constructor(
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line
1091, in _init_compiled
│
│ superset param = {
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line
1092, in <dictcomp>
│
│ superset key: processors[key](compiled_params[key])
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/type_api.py", line
1631, in process
│
│ superset return impl_processor(process_param(value, dialect))
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy_utils/types/encrypted/encrypted_type.py",
line 471, in process_bind_param
│
│ superset value = super().process_bind_param(value=value,
dialect=dialect)
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy_utils/types/encrypted/encrypted_type.py",
line 397, in process_bind_param
│
│ superset self._update_key()
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy_utils/types/encrypted/encrypted_type.py",
line 392, in _update_key
│
│ superset self.engine._update_key(key)
│
│ superset File
"/usr/local/lib/python3.10/site-packages/sqlalchemy_utils/types/encrypted/encrypted_type.py",
line 52, in _update_key
│
│ superset digest.update(key)
│
│ superset sqlalchemy.exc.StatementError: (builtins.TypeError) argument
'data': a bytes-like object is required, not 'tuple'
│
│ superset [SQL: INSERT INTO dbs (uuid, created_on, changed_on,
verbose_name, database_name, sqlalchemy_uri, password, cache_timeout,
select_as_create_table_as, expose_in_sqllab, configuration_method,
allow_run_async, allow_file_upload, allow_ │
│ superset [parameters: [{'configuration_method':
<ConfigurationMethod.DYNAMIC_FORM: 'dynamic_form'>, 'password':
'jcDkmtmZw7KAo1b6ZoF7', 'sqlalchemy_uri': 'postgresql+psycop ... (213
characters truncated) ... ows_virtual_table_explore":true}' │
│ superset
### 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]
