Ash Berlin-Taylor created AIRFLOW-5050:
------------------------------------------

             Summary: `airflow sync_perm` failes with constraint error after 
upgrade
                 Key: AIRFLOW-5050
                 URL: https://issues.apache.org/jira/browse/AIRFLOW-5050
             Project: Apache Airflow
          Issue Type: Bug
          Components: webserver
    Affects Versions: 1.10.4
            Reporter: Ash Berlin-Taylor


Running {{airflow sync_perm}} after upgrading from 1.10.3 to 1.10.4rc3 yields 
this error:

{noformat}
[2019-07-26 14:05:08,160] {security.py:446} INFO - Start syncing user roles.
[2019-07-26 14:05:08,740] {security.py:357} INFO - Fetching a set of all 
permission, view_menu from FAB meta-table
[2019-07-26 14:05:09,495] {security.py:307} INFO - Cleaning faulty perms
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1244, 
in _execute_context
    cursor, statement, parameters, context
  File "/usr/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 
552, in do_execute
    cursor.execute(statement, parameters)
psycopg2.IntegrityError: update or delete on table "ab_permission_view" 
violates foreign key constraint 
"ab_permission_view_role_permission_view_id_fkey" on table 
"ab_permission_view_role"
DETAIL:  Key (id)=(57) is still referenced from table "ab_permission_view_role".


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

Traceback (most recent call last):
  File "/usr/bin/airflow", line 32, in <module>
    args.func(args)
  File "/usr/lib/python3.6/site-packages/airflow/utils/cli.py", line 74, in 
wrapper
    return f(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/airflow/bin/cli.py", line 1472, in 
sync_perm
    appbuilder = cached_appbuilder()
  File "/usr/lib/python3.6/site-packages/airflow/www_rbac/app.py", line 237, in 
cached_appbuilder
    cached_app(config=config, testing=testing)
  File "/usr/lib/python3.6/site-packages/airflow/www_rbac/app.py", line 230, in 
cached_app
    app, _ = create_app(config, session, testing)
  File "/usr/lib/python3.6/site-packages/airflow/www_rbac/app.py", line 190, in 
create_app
    security_manager.sync_roles()
  File 
"/usr/lib/python3.6/site-packages/astronomer/flask_appbuilder/security.py", 
line 278, in sync_roles
    super().sync_roles()
  File "/usr/lib/python3.6/site-packages/airflow/www_rbac/security.py", line 
460, in sync_roles
    self.clean_perms()
  File "/usr/lib/python3.6/site-packages/airflow/www_rbac/security.py", line 
316, in clean_perms
    deleted_count = pvms.delete()
  File "/usr/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 3696, 
in delete
    delete_op.exec_()
  File "/usr/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 
1691, in exec_
    self._do_exec()
  File "/usr/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 
1919, in _do_exec
    self._execute_stmt(delete_stmt)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 
1696, in _execute_stmt
    self.result = self.query._execute_crud(stmt, self.mapper)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 3363, 
in _execute_crud
    return conn.execute(stmt, self._params)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 988, 
in execute
    return meth(self, multiparams, params)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 287, 
in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1107, 
in _execute_clauseelement
    distilled_params,
  File "/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1248, 
in _execute_context
    e, statement, parameters, cursor, context
  File "/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1466, 
in _handle_dbapi_exception
    util.raise_from_cause(sqlalchemy_exception, exc_info)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 398, 
in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 152, 
in reraise
    raise value.with_traceback(tb)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1244, 
in _execute_context
    cursor, statement, parameters, context
  File "/usr/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 
552, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.IntegrityError: (psycopg2.IntegrityError) update or delete on 
table "ab_permission_view" violates foreign key constraint 
"ab_permission_view_role_permission_view_id_fkey" on table 
"ab_permission_view_role"
DETAIL:  Key (id)=(57) is still referenced from table "ab_permission_view_role".

[SQL: DELETE FROM ab_permission_view WHERE ab_permission_view.permission_id IS 
NULL OR ab_permission_view.view_menu_id IS NULL]
(Background on this error at: http://sqlalche.me/e/gkpj)

{noformat}



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to