apache / superset

Apache Superset is a Data Visualization and Data Exploration Platform
https://superset.apache.org/
Apache License 2.0
62.38k stars 13.71k forks source link

Unable to delete dashboards #27140

Closed shubhshah01 closed 7 months ago

shubhshah01 commented 8 months ago

Bug description

For any existing dashboard or a new untitled empty dashboard, unable to delete it.

DELETE API response

Request URL: https://<< host >>/api/v1/dashboard/14 Request Method: DELETE Status Code: 422 Unprocessable Content Response {"message":"Dashboard could not be deleted."}

How to reproduce the bug

  1. Go to dashboards
  2. Click +Dashboard button
  3. Click Discard or Save
  4. Go back to dashboards and try deleting the newly created untitled dashboard
  5. It shows an error Unable to delete

Screenshots/recordings

image

Superset version

3.1.0

Python version

3.9

Node version

16

Browser

Chrome

Additional context

No response

Checklist

jbat commented 8 months ago

I have the same issue on 3.1.0

Also happening on the GUI as well as API.

"There was an issue deleting TEST COPY - TO BE DELETED: Dashboard could not be deleted."

Logs showing this

 File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 1207, in _run_crud
2024-02-19T03:29:32.878Z     raise exc.StaleDataError(
2024-02-19T03:29:32.878Z sqlalchemy.orm.exc.StaleDataError: DELETE statement on table 'tagged_object' expected to delete 3 row(s); Only 4 were matched.

Full stack trace

2024-02-19T03:29:32.878Z Traceback (most recent call last):
2024-02-19T03:29:32.878Z   File "/app/superset/daos/base.py", line 222, in delete
2024-02-19T03:29:32.878Z     db.session.commit()
2024-02-19T03:29:32.878Z   File "<string>", line 2, in commit
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1435, in commit
2024-02-19T03:29:32.878Z     self._transaction.commit(_to_root=self.future)
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 829, in commit
2024-02-19T03:29:32.878Z     self._prepare_impl()
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 808, in _prepare_impl
2024-02-19T03:29:32.878Z     self.session.flush()
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3367, in flush
2024-02-19T03:29:32.878Z     self._flush(objects)
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3507, in _flush
2024-02-19T03:29:32.878Z     transaction.rollback(_capture_exception=True)
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__
2024-02-19T03:29:32.878Z     compat.raise_(
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
2024-02-19T03:29:32.878Z     raise exception
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3467, in _flush
2024-02-19T03:29:32.878Z     flush_context.execute()
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 456, in execute
2024-02-19T03:29:32.878Z     rec.execute(self)
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 577, in execute
2024-02-19T03:29:32.878Z     self.dependency_processor.process_deletes(uow, states)
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 1110, in process_deletes
2024-02-19T03:29:32.878Z     self._run_crud(
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 1207, in _run_crud
2024-02-19T03:29:32.878Z     raise exc.StaleDataError(
2024-02-19T03:29:32.878Z sqlalchemy.orm.exc.StaleDataError: DELETE statement on table 'tagged_object' expected to delete 3 row(s); Only 4 were matched.
2024-02-19T03:29:32.878Z The above exception was the direct cause of the following exception:
2024-02-19T03:29:32.878Z Traceback (most recent call last):
2024-02-19T03:29:32.878Z   File "/app/superset/commands/dashboard/delete.py", line 49, in run
2024-02-19T03:29:32.878Z     DashboardDAO.delete(self._models)
2024-02-19T03:29:32.878Z   File "/app/superset/daos/base.py", line 225, in delete
2024-02-19T03:29:32.878Z     raise DAODeleteFailedError(exception=ex) from ex
2024-02-19T03:29:32.878Z superset.daos.exceptions.DAODeleteFailedError: Delete failed
2024-02-19T03:29:32.878Z 2024-02-19 03:29:32,878:ERROR:superset.commands.dashboard.delete:DELETE statement on table 'tagged_object' expected to delete 3 row(s); Only 4 were matched.
2024-02-19T03:29:32.878Z Traceback (most recent call last):
2024-02-19T03:29:32.878Z   File "/app/superset/daos/base.py", line 222, in delete
2024-02-19T03:29:32.878Z     db.session.commit()
2024-02-19T03:29:32.878Z   File "<string>", line 2, in commit
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1435, in commit
2024-02-19T03:29:32.878Z     self._transaction.commit(_to_root=self.future)
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 829, in commit
2024-02-19T03:29:32.878Z     self._prepare_impl()
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 808, in _prepare_impl
2024-02-19T03:29:32.878Z     self.session.flush()
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3367, in flush
2024-02-19T03:29:32.878Z     self._flush(objects)
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3507, in _flush
2024-02-19T03:29:32.878Z     transaction.rollback(_capture_exception=True)
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__
2024-02-19T03:29:32.878Z     compat.raise_(
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
2024-02-19T03:29:32.878Z     raise exception
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3467, in _flush
2024-02-19T03:29:32.878Z     flush_context.execute()
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 456, in execute
2024-02-19T03:29:32.878Z     rec.execute(self)
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 577, in execute
2024-02-19T03:29:32.878Z     self.dependency_processor.process_deletes(uow, states)
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 1110, in process_deletes
2024-02-19T03:29:32.878Z     self._run_crud(
2024-02-19T03:29:32.878Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 1207, in _run_crud
2024-02-19T03:29:32.878Z     raise exc.StaleDataError(
2024-02-19T03:29:32.878Z sqlalchemy.orm.exc.StaleDataError: DELETE statement on table 'tagged_object' expected to delete 3 row(s); Only 4 were matched.
2024-02-19T03:29:32.878Z The above exception was the direct cause of the following exception:
2024-02-19T03:29:32.878Z Traceback (most recent call last):
2024-02-19T03:29:32.878Z   File "/app/superset/commands/dashboard/delete.py", line 49, in run
2024-02-19T03:29:32.878Z     DashboardDAO.delete(self._models)
2024-02-19T03:29:32.878Z   File "/app/superset/daos/base.py", line 225, in delete
2024-02-19T03:29:32.878Z     raise DAODeleteFailedError(exception=ex) from ex
2024-02-19T03:29:32.878Z superset.daos.exceptions.DAODeleteFailedError: Delete failed
2024-02-19T03:29:32.879Z Error deleting model DashboardRestApi: Dashboard could not be deleted.
2024-02-19T03:29:32.879Z Traceback (most recent call last):
2024-02-19T03:29:32.879Z   File "/app/superset/daos/base.py", line 222, in delete
2024-02-19T03:29:32.879Z     db.session.commit()
2024-02-19T03:29:32.879Z   File "<string>", line 2, in commit
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1435, in commit
2024-02-19T03:29:32.879Z     self._transaction.commit(_to_root=self.future)
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 829, in commit
2024-02-19T03:29:32.879Z     self._prepare_impl()
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 808, in _prepare_impl
2024-02-19T03:29:32.879Z     self.session.flush()
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3367, in flush
2024-02-19T03:29:32.879Z     self._flush(objects)
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3507, in _flush
2024-02-19T03:29:32.879Z     transaction.rollback(_capture_exception=True)
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__
2024-02-19T03:29:32.879Z     compat.raise_(
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
2024-02-19T03:29:32.879Z     raise exception
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3467, in _flush
2024-02-19T03:29:32.879Z     flush_context.execute()
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 456, in execute
2024-02-19T03:29:32.879Z     rec.execute(self)
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 577, in execute
2024-02-19T03:29:32.879Z     self.dependency_processor.process_deletes(uow, states)
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 1110, in process_deletes
2024-02-19T03:29:32.879Z     self._run_crud(
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 1207, in _run_crud
2024-02-19T03:29:32.879Z     raise exc.StaleDataError(
2024-02-19T03:29:32.879Z sqlalchemy.orm.exc.StaleDataError: DELETE statement on table 'tagged_object' expected to delete 3 row(s); Only 4 were matched.
2024-02-19T03:29:32.879Z The above exception was the direct cause of the following exception:
2024-02-19T03:29:32.879Z Traceback (most recent call last):
2024-02-19T03:29:32.879Z   File "/app/superset/commands/dashboard/delete.py", line 49, in run
2024-02-19T03:29:32.879Z     DashboardDAO.delete(self._models)
2024-02-19T03:29:32.879Z   File "/app/superset/daos/base.py", line 225, in delete
2024-02-19T03:29:32.879Z     raise DAODeleteFailedError(exception=ex) from ex
2024-02-19T03:29:32.879Z superset.daos.exceptions.DAODeleteFailedError: Delete failed
2024-02-19T03:29:32.879Z The above exception was the direct cause of the following exception:
2024-02-19T03:29:32.879Z Traceback (most recent call last):
2024-02-19T03:29:32.879Z   File "/app/superset/dashboards/api.py", line 672, in delete
2024-02-19T03:29:32.879Z     DeleteDashboardCommand([pk]).run()
2024-02-19T03:29:32.879Z   File "/app/superset/commands/dashboard/delete.py", line 52, in run
2024-02-19T03:29:32.879Z     raise DashboardDeleteFailedError() from ex
2024-02-19T03:29:32.879Z superset.commands.dashboard.exceptions.DashboardDeleteFailedError: Dashboard could not be deleted.
2024-02-19T03:29:32.879Z 2024-02-19 03:29:32,878:ERROR:superset.dashboards.api:Error deleting model DashboardRestApi: Dashboard could not be deleted.
2024-02-19T03:29:32.879Z Traceback (most recent call last):
2024-02-19T03:29:32.879Z   File "/app/superset/daos/base.py", line 222, in delete
2024-02-19T03:29:32.879Z     db.session.commit()
2024-02-19T03:29:32.879Z   File "<string>", line 2, in commit
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1435, in commit
2024-02-19T03:29:32.879Z     self._transaction.commit(_to_root=self.future)
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 829, in commit
2024-02-19T03:29:32.879Z     self._prepare_impl()
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 808, in _prepare_impl
2024-02-19T03:29:32.879Z     self.session.flush()
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3367, in flush
2024-02-19T03:29:32.879Z     self._flush(objects)
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3507, in _flush
2024-02-19T03:29:32.879Z     transaction.rollback(_capture_exception=True)
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__
2024-02-19T03:29:32.879Z     compat.raise_(
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
2024-02-19T03:29:32.879Z     raise exception
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3467, in _flush
2024-02-19T03:29:32.879Z     flush_context.execute()
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 456, in execute
2024-02-19T03:29:32.879Z     rec.execute(self)
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 577, in execute
2024-02-19T03:29:32.879Z     self.dependency_processor.process_deletes(uow, states)
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 1110, in process_deletes
2024-02-19T03:29:32.879Z     self._run_crud(
2024-02-19T03:29:32.879Z   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 1207, in _run_crud
2024-02-19T03:29:32.879Z     raise exc.StaleDataError(
2024-02-19T03:29:32.879Z sqlalchemy.orm.exc.StaleDataError: DELETE statement on table 'tagged_object' expected to delete 3 row(s); Only 4 were matched.
2024-02-19T03:29:32.879Z The above exception was the direct cause of the following exception:
2024-02-19T03:29:32.879Z Traceback (most recent call last):
2024-02-19T03:29:32.879Z   File "/app/superset/commands/dashboard/delete.py", line 49, in run
2024-02-19T03:29:32.879Z     DashboardDAO.delete(self._models)
2024-02-19T03:29:32.879Z   File "/app/superset/daos/base.py", line 225, in delete
2024-02-19T03:29:32.879Z     raise DAODeleteFailedError(exception=ex) from ex
2024-02-19T03:29:32.879Z superset.daos.exceptions.DAODeleteFailedError: Delete failed
2024-02-19T03:29:32.879Z The above exception was the direct cause of the following exception:
2024-02-19T03:29:32.879Z Traceback (most recent call last):
2024-02-19T03:29:32.879Z   File "/app/superset/dashboards/api.py", line 672, in delete
2024-02-19T03:29:32.879Z     DeleteDashboardCommand([pk]).run()
2024-02-19T03:29:32.879Z   File "/app/superset/commands/dashboard/delete.py", line 52, in run
2024-02-19T03:29:32.879Z     raise DashboardDeleteFailedError() from ex
2024-02-19T03:29:32.879Z superset.commands.dashboard.exceptions.DashboardDeleteFailedError: Dashboard could not be deleted.
2024-02-19T03:29:32.888Z 49.181.76.109 - - [19/Feb/2024:03:29:32 +0000] "DELETE /api/v1/dashboard/93 HTTP/1.1" 422 46 "https://myhost/dashboard/list/?pageIndex=0&sortColumn=changed_on_delta_humanized&sortOrder=desc&viewMode=table" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36"
shubhshah01 commented 8 months ago

Pasting my logs

LINE 2: FROM filter_sets 
             ^

[SQL: SELECT filter_sets.created_on AS filter_sets_created_on, filter_sets.changed_on AS filter_sets_changed_on, filter_sets.id AS filter_sets_id, filter_sets.name AS filter_sets_name, filter_sets.description AS filter_sets_description, filter_sets.json_metadata AS filter_sets_json_metadata, filter_sets.dashboard_id AS filter_sets_dashboard_id, filter_sets.owner_id AS filter_sets_owner_id, filter_sets.owner_type AS filter_sets_owner_type, filter_sets.created_by_fk AS filter_sets_created_by_fk, filter_sets.changed_by_fk AS filter_sets_changed_by_fk 
FROM filter_sets 
WHERE %(param_1)s = filter_sets.dashboard_id]
[parameters: {'param_1': 1}]
(Background on this error at: https://sqlalche.me/e/14/f405)
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1819, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.UndefinedTable: relation "filter_sets" does not exist
LINE 2: FROM filter_sets 
             ^

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/superset/daos/base.py", line 219, in delete
    db.session.delete(item)
  File "<string>", line 2, in delete
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 2648, in delete
    self._delete_impl(state, instance, head=True)
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 2674, in _delete_impl
    cascade_states = list(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/mapper.py", line 3202, in cascade_iterator
    queue = deque(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/relationships.py", line 1989, in cascade_iterator
    tuples = self._value_as_iterable(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/relationships.py", line 1963, in _value_as_iterable
    x = impl.get(state, dict_, passive=passive)
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/attributes.py", line 941, in get
    value = self._fire_loader_callables(state, key, passive)
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/attributes.py", line 977, in _fire_loader_callables
    return self.callable_(state, passive)
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/strategies.py", line 911, in _load_for_state
    return self._emit_lazyload(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/strategies.py", line 1047, in _emit_lazyload
    result = session.execute(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1696, in execute
    result = conn._execute_20(statement, params or {}, execution_options)
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1631, in _execute_20
    return meth(self, args_10style, kwargs_10style, execution_options)
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 325, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1498, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1862, in _execute_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2043, in _handle_dbapi_exception
    util.raise_(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
    raise exception
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1819, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "filter_sets" does not exist
LINE 2: FROM filter_sets 
             ^

[SQL: SELECT filter_sets.created_on AS filter_sets_created_on, filter_sets.changed_on AS filter_sets_changed_on, filter_sets.id AS filter_sets_id, filter_sets.name AS filter_sets_name, filter_sets.description AS filter_sets_description, filter_sets.json_metadata AS filter_sets_json_metadata, filter_sets.dashboard_id AS filter_sets_dashboard_id, filter_sets.owner_id AS filter_sets_owner_id, filter_sets.owner_type AS filter_sets_owner_type, filter_sets.created_by_fk AS filter_sets_created_by_fk, filter_sets.changed_by_fk AS filter_sets_changed_by_fk 
FROM filter_sets 
WHERE %(param_1)s = filter_sets.dashboard_id]
[parameters: {'param_1': 1}]
(Background on this error at: https://sqlalche.me/e/14/f405)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/superset/commands/dashboard/delete.py", line 49, in run
    DashboardDAO.delete(self._models)
  File "/app/superset/daos/base.py", line 225, in delete
    raise DAODeleteFailedError(exception=ex) from ex
superset.daos.exceptions.DAODeleteFailedError: Delete failed
2024-02-19 05:10:20,286:ERROR:superset.commands.dashboard.delete:(psycopg2.errors.UndefinedTable) relation "filter_sets" does not exist
LINE 2: FROM filter_sets 
             ^
weikhor commented 8 months ago

Pasting my logs

LINE 2: FROM filter_sets 
             ^

[SQL: SELECT filter_sets.created_on AS filter_sets_created_on, filter_sets.changed_on AS filter_sets_changed_on, filter_sets.id AS filter_sets_id, filter_sets.name AS filter_sets_name, filter_sets.description AS filter_sets_description, filter_sets.json_metadata AS filter_sets_json_metadata, filter_sets.dashboard_id AS filter_sets_dashboard_id, filter_sets.owner_id AS filter_sets_owner_id, filter_sets.owner_type AS filter_sets_owner_type, filter_sets.created_by_fk AS filter_sets_created_by_fk, filter_sets.changed_by_fk AS filter_sets_changed_by_fk 
FROM filter_sets 
WHERE %(param_1)s = filter_sets.dashboard_id]
[parameters: {'param_1': 1}]
(Background on this error at: https://sqlalche.me/e/14/f405)
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1819, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.UndefinedTable: relation "filter_sets" does not exist
LINE 2: FROM filter_sets 
             ^

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/superset/daos/base.py", line 219, in delete
    db.session.delete(item)
  File "<string>", line 2, in delete
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 2648, in delete
    self._delete_impl(state, instance, head=True)
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 2674, in _delete_impl
    cascade_states = list(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/mapper.py", line 3202, in cascade_iterator
    queue = deque(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/relationships.py", line 1989, in cascade_iterator
    tuples = self._value_as_iterable(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/relationships.py", line 1963, in _value_as_iterable
    x = impl.get(state, dict_, passive=passive)
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/attributes.py", line 941, in get
    value = self._fire_loader_callables(state, key, passive)
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/attributes.py", line 977, in _fire_loader_callables
    return self.callable_(state, passive)
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/strategies.py", line 911, in _load_for_state
    return self._emit_lazyload(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/strategies.py", line 1047, in _emit_lazyload
    result = session.execute(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1696, in execute
    result = conn._execute_20(statement, params or {}, execution_options)
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1631, in _execute_20
    return meth(self, args_10style, kwargs_10style, execution_options)
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 325, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1498, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1862, in _execute_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2043, in _handle_dbapi_exception
    util.raise_(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
    raise exception
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1819, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "filter_sets" does not exist
LINE 2: FROM filter_sets 
             ^

[SQL: SELECT filter_sets.created_on AS filter_sets_created_on, filter_sets.changed_on AS filter_sets_changed_on, filter_sets.id AS filter_sets_id, filter_sets.name AS filter_sets_name, filter_sets.description AS filter_sets_description, filter_sets.json_metadata AS filter_sets_json_metadata, filter_sets.dashboard_id AS filter_sets_dashboard_id, filter_sets.owner_id AS filter_sets_owner_id, filter_sets.owner_type AS filter_sets_owner_type, filter_sets.created_by_fk AS filter_sets_created_by_fk, filter_sets.changed_by_fk AS filter_sets_changed_by_fk 
FROM filter_sets 
WHERE %(param_1)s = filter_sets.dashboard_id]
[parameters: {'param_1': 1}]
(Background on this error at: https://sqlalche.me/e/14/f405)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/superset/commands/dashboard/delete.py", line 49, in run
    DashboardDAO.delete(self._models)
  File "/app/superset/daos/base.py", line 225, in delete
    raise DAODeleteFailedError(exception=ex) from ex
superset.daos.exceptions.DAODeleteFailedError: Delete failed
2024-02-19 05:10:20,286:ERROR:superset.commands.dashboard.delete:(psycopg2.errors.UndefinedTable) relation "filter_sets" does not exist
LINE 2: FROM filter_sets 
             ^

@shubhshah01 Are you running superset on local environment manually or using docker compose ?

shubhshah01 commented 8 months ago

Hey @weikhor I am using docker compose

michael-s-molina commented 8 months ago

@shubhshah01 The error is happening because you're missing the filter_sets table. If you search for filter_sets in Superset's codebase you can see that this table was created in a migration from 2021. Recently, this table was deleted on master in this migration which is NOT present in 3.1.

shubhshah01 commented 8 months ago

@michael-s-molina Thanks for that...I am on 3.1.0 how do i fix it if it was removed in that version ?

michael-s-molina commented 8 months ago

@michael-s-molina Thanks for that...I am on 3.1.0 how do i fix it if it was removed in that version ?

Just to be clear, there's no script to remove filter_sets in 3.1 so I don't know how it was removed in your deployment. To fix it, you'll need to re-run the migration script that creates the table directly in your database.

shubhshah01 commented 8 months ago

Thanks @michael-s-molina Probably it was removed when my instance was downgraded from master to 3.1.0 ! Anyways will try running the above script.

michael-s-molina commented 7 months ago

Closing the issue assuming the problem was fixed by correctly executing the migrations. Feel free to reopen if that's not the case.

jbat commented 7 months ago

Looks like my error is a different issue.
ref https://github.com/apache/superset/pull/26654

amitrbhosale commented 4 months ago

Is there a suggested upgrade path of superset while upgrading to latest versions so that this issue doesn't arise? e.g. 3.0.1 -> 3.1.0 -> 4.0 -> 4.0.1