dimoha opened a new issue, #27896:
URL: https://github.com/apache/superset/issues/27896

   ### Bug description
   
   I have a exception, when migrate to 4.0.0rc2 version:
   
   `superset_init         | INFO  [alembic.runtime.migration] Context impl 
PostgresqlImpl.
   superset_init         | INFO  [alembic.runtime.migration] Will assume 
transactional DDL.
   superset_init         | INFO  [alembic.runtime.migration] Running upgrade 
1cf8e4344e2b -> 87d38ad83218, Migrate can_view_and_drill permission
   superset_init         | Removing can_view_and_drill Dashboard from Admin
   superset_init         | INFO  [superset.migrations.shared.security_converge] 
Removing can_view_and_drill Dashboard from Admin
   superset_init         | Add can_view_chart_as_table Dashboard to Admin
   superset_init         | INFO  [superset.migrations.shared.security_converge] 
Add can_view_chart_as_table Dashboard to Admin
   superset_init         | Add None to Admin
   superset_init         | INFO  [superset.migrations.shared.security_converge] 
Add None to Admin
   superset_init         | Removing can_view_and_drill Dashboard from Alpha
   superset_init         | INFO  [superset.migrations.shared.security_converge] 
Removing can_view_and_drill Dashboard from Alpha
   superset_init         | Add can_view_chart_as_table Dashboard to Alpha
   superset_init         | INFO  [superset.migrations.shared.security_converge] 
Add can_view_chart_as_table Dashboard to Alpha
   superset_init         | Add None to Alpha
   superset_init         | INFO  [superset.migrations.shared.security_converge] 
Add None to Alpha
   superset_init         | Removing can_view_and_drill Dashboard from Gamma
   superset_init         | INFO  [superset.migrations.shared.security_converge] 
Removing can_view_and_drill Dashboard from Gamma
   superset_init         | Add can_view_chart_as_table Dashboard to Gamma
   superset_init         | INFO  [superset.migrations.shared.security_converge] 
Add can_view_chart_as_table Dashboard to Gamma
   superset_init         | Add None to Gamma
   superset_init         | INFO  [superset.migrations.shared.security_converge] 
Add None to Gamma
   superset_init         | Going to delete pvm: can_view_and_drill Dashboard
   superset_init         | INFO  [superset.migrations.shared.security_converge] 
Going to delete pvm: can_view_and_drill Dashboard
   superset_init         | Loaded your LOCAL configuration at 
[/app/docker/pythonpath_dev/superset_config.py]
   superset_init         | Traceback (most recent call last):
   superset_init         |   File "/usr/local/bin/superset", line 33, in 
<module>
   superset_init         |     sys.exit(load_entry_point('apache-superset', 
'console_scripts', 'superset')())
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
   superset_init         |     return self.main(*args, **kwargs)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/click/core.py", line 1055, in main
   superset_init         |     rv = self.invoke(ctx)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
   superset_init         |     return 
_process_result(sub_ctx.command.invoke(sub_ctx))
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
   superset_init         |     return 
_process_result(sub_ctx.command.invoke(sub_ctx))
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
   superset_init         |     return ctx.invoke(self.callback, **ctx.params)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/click/core.py", line 760, in invoke
   superset_init         |     return __callback(*args, **kwargs)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/click/decorators.py", line 26, in 
new_func
   superset_init         |     return f(get_current_context(), *args, **kwargs)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/flask/cli.py", line 357, in decorator
   superset_init         |     return __ctx.invoke(f, *args, **kwargs)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/click/core.py", line 760, in invoke
   superset_init         |     return __callback(*args, **kwargs)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/flask_migrate/cli.py", line 149, in 
upgrade
   superset_init         |     _upgrade(directory, revision, sql, tag, x_arg)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/flask_migrate/__init__.py", line 98, in 
wrapped
   superset_init         |     f(*args, **kwargs)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/flask_migrate/__init__.py", line 185, 
in upgrade
   superset_init         |     command.upgrade(config, revision, sql=sql, 
tag=tag)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/alembic/command.py", line 294, in 
upgrade
   superset_init         |     script.run_env()
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/alembic/script/base.py", line 490, in 
run_env
   superset_init         |     util.load_python_file(self.dir, "env.py")
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/alembic/util/pyfiles.py", line 97, in 
load_python_file
   superset_init         |     module = load_module_py(module_id, path)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/alembic/util/compat.py", line 184, in 
load_module_py
   superset_init         |     spec.loader.exec_module(module)
   superset_init         |   File "<frozen importlib._bootstrap_external>", 
line 850, in exec_module
   superset_init         |   File "<frozen importlib._bootstrap>", line 228, in 
_call_with_frames_removed
   superset_init         |   File 
"/app/superset/extensions/../migrations/env.py", line 127, in <module>
   superset_init         |     run_migrations_online()
   superset_init         |   File 
"/app/superset/extensions/../migrations/env.py", line 119, in 
run_migrations_online
   superset_init         |     context.run_migrations()
   superset_init         |   File "<string>", line 8, in run_migrations
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/alembic/runtime/environment.py", line 
813, in run_migrations
   superset_init         |     self.get_context().run_migrations(**kw)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/alembic/runtime/migration.py", line 
561, in run_migrations
   superset_init         |     step.migration_fn(**kw)
   superset_init         |   File 
"/app/superset/migrations/versions/2024-02-07_17-13_87d38ad83218_migrate_can_view_and_drill_permission.py",
 line 65, in upgrade
   superset_init         |     do_upgrade(session)
   superset_init         |   File 
"/app/superset/migrations/versions/2024-02-07_17-13_87d38ad83218_migrate_can_view_and_drill_permission.py",
 line 53, in do_upgrade
   superset_init         |     migrate_roles(session, PVM_MAP)
   superset_init         |   File 
"/app/superset/migrations/shared/security_converge.py", line 248, in 
migrate_roles
   superset_init         |     _delete_old_permissions(session, pvm_map)
   superset_init         |   File 
"/app/superset/migrations/shared/security_converge.py", line 197, in 
_delete_old_permissions
   superset_init         |     pvms_with_permission = (
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2819, in 
first
   superset_init         |     return self.limit(1)._iter().first()
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2903, in 
_iter
   superset_init         |     result = self.session.execute(
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1644, 
in execute
   superset_init         |     ) = compile_state_cls.orm_pre_session_exec(
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/context.py", line 319, 
in orm_pre_session_exec
   superset_init         |     session._autoflush()
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 2230, 
in _autoflush
   superset_init         |     self.flush()
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3367, 
in flush
   superset_init         |     self._flush(objects)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3507, 
in _flush
   superset_init         |     transaction.rollback(_capture_exception=True)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 
70, in __exit__
   superset_init         |     compat.raise_(
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, 
in raise_
   superset_init         |     raise exception
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 3467, 
in _flush
   superset_init         |     flush_context.execute()
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 
456, in execute
   superset_init         |     rec.execute(self)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/unitofwork.py", line 
579, in execute
   superset_init         |     self.dependency_processor.process_saves(uow, 
states)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 
1136, in process_saves
   superset_init         |     if not self._synchronize(
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 
1252, in _synchronize
   superset_init         |     self._verify_canload(child)
   superset_init         |   File 
"/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/dependency.py", line 
257, in _verify_canload
   superset_init         |     raise exc.FlushError(
   superset_init         | sqlalchemy.orm.exc.FlushError: Can't flush None 
value found in collection Role.permissions
   `
   
   i think that mistake here:
   
   
https://github.com/apache/superset/blob/master/superset/migrations/versions/2024-02-07_17-13_87d38ad83218_migrate_can_view_and_drill_permission.py#L41
   
   may be replace it from: 
   `NEW_PVMS = {"Dashboard": ("can_view_chart_as_table",)}`
   to: 
   `NEW_PVMS = {"Dashboard": ("can_view_chart_as_table",), Pvm("Dashboard", 
"can_view_query")}`
   
   
   
   ### How to reproduce the bug
   
   Migrate to 4.0.0rc2
   
   ### Screenshots/recordings
   
   
![HbwL7E](https://github.com/apache/superset/assets/1734715/c9bd32e9-f877-4fca-9d46-b211be62b112)
   
   
   ### Superset version
   
   master / latest-dev
   
   ### Python version
   
   3.10
   
   ### 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]

Reply via email to