Projet

Général

Profil

Bug #48642

Erreur migrate _schemas assert len(perm.roles.all()) == 1

Ajouté par Emmanuel Cazenave il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Nouveau
Priorité:
Normal
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
18 novembre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

fatal: [localhost]: FAILED! => {"changed": true, "cmd": ["/home/cazino/envs/publik-env-py3/bin/authentic-multitenant-manage", "migrate_schemas"], "delta": "0:00:01.814881", "end": "2020-11-18 10:46:51.374396", "msg": "non-zero return code", "rc": 1, "start": "2020-11-18 10:46:49.559515", "stderr": "/home/cazino/src/authentic/src/authentic2/settings.py:192: UserWarning: journald will not be used directly, please install python-systemd\n  'authentic2_auth_oidc.authenticators.OIDCAuthenticator',\nTraceback (most recent call last):\n  File \"/home/cazino/src/authentic/authentic2-ctl\", line 21, in <module>\n    execute_from_command_line(sys.argv[:1] + argv)\n  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/core/management/__init__.py\", line 364, in execute_from_command_line\n    utility.execute()\n  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/core/management/__init__.py\", line 356, in execute\n    self.fetch_command(subcommand).run_from_argv(self.argv)\n  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/core/management/base.py\", line 283, in run_from_argv\n    self.execute(*args, **cmd_options)\n  File \"/home/cazino/src/hobo/hobo/agent/authentic2/apps.py\", line 45, in new_execute\n    return old_execute(self, *args, **kwargs)\n  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/core/management/base.py\", line 330, in execute\n    output = self.handle(*args, **options)\n  File \"/home/cazino/src/hobo/hobo/multitenant/management/commands/migrate_schemas.py\", line 71, in handle\n    self.run_migrations(tenant, settings.TENANT_APPS)\n  File \"/home/cazino/src/hobo/hobo/multitenant/management/commands/migrate_schemas.py\", line 89, in run_migrations\n    command.execute(*self.args, **self.options)\n  File \"/home/cazino/src/hobo/hobo/agent/authentic2/apps.py\", line 45, in new_execute\n    return old_execute(self, *args, **kwargs)\n  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/core/management/base.py\", line 330, in execute\n    output = self.handle(*args, **options)\n  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/core/management/commands/migrate.py\", line 227, in handle\n    self.verbosity, self.interactive, connection.alias, apps=post_migrate_apps, plan=plan,\n  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/core/management/sql.py\", line 53, in emit_post_migrate_signal\n    **kwargs\n  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/dispatch/dispatcher.py\", line 193, in send\n    for receiver in self._live_receivers(sender)\n  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/dispatch/dispatcher.py\", line 193, in <listcomp>\n    for receiver in self._live_receivers(sender)\n  File \"/home/cazino/src/authentic/src/authentic2/a2_rbac/signal_handlers.py\", line 108, in post_migrate_update_role_admins\n    update_user_admin_roles_permission()\n  File \"/home/cazino/src/authentic/src/authentic2/a2_rbac/management.py\", line 169, in update_user_admin_roles_permission\n    assert len(perm.roles.all()) == 1\nAssertionError", "stderr_lines": ["/home/cazino/src/authentic/src/authentic2/settings.py:192: UserWarning: journald will not be used directly, please install python-systemd", "  'authentic2_auth_oidc.authenticators.OIDCAuthenticator',", "Traceback (most recent call last):", "  File \"/home/cazino/src/authentic/authentic2-ctl\", line 21, in <module>", "    execute_from_command_line(sys.argv[:1] + argv)", "  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/core/management/__init__.py\", line 364, in execute_from_command_line", "    utility.execute()", "  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/core/management/__init__.py\", line 356, in execute", "    self.fetch_command(subcommand).run_from_argv(self.argv)", "  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/core/management/base.py\", line 283, in run_from_argv", "    self.execute(*args, **cmd_options)", "  File \"/home/cazino/src/hobo/hobo/agent/authentic2/apps.py\", line 45, in new_execute", "    return old_execute(self, *args, **kwargs)", "  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/core/management/base.py\", line 330, in execute", "    output = self.handle(*args, **options)", "  File \"/home/cazino/src/hobo/hobo/multitenant/management/commands/migrate_schemas.py\", line 71, in handle", "    self.run_migrations(tenant, settings.TENANT_APPS)", "  File \"/home/cazino/src/hobo/hobo/multitenant/management/commands/migrate_schemas.py\", line 89, in run_migrations", "    command.execute(*self.args, **self.options)", "  File \"/home/cazino/src/hobo/hobo/agent/authentic2/apps.py\", line 45, in new_execute", "    return old_execute(self, *args, **kwargs)", "  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/core/management/base.py\", line 330, in execute", "    output = self.handle(*args, **options)", "  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/core/management/commands/migrate.py\", line 227, in handle", "    self.verbosity, self.interactive, connection.alias, apps=post_migrate_apps, plan=plan,", "  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/core/management/sql.py\", line 53, in emit_post_migrate_signal", "    **kwargs", "  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/dispatch/dispatcher.py\", line 193, in send", "    for receiver in self._live_receivers(sender)", "  File \"/home/cazino/envs/publik-env-py3/lib/python3.7/site-packages/django/dispatch/dispatcher.py\", line 193, in <listcomp>", "    for receiver in self._live_receivers(sender)", "  File \"/home/cazino/src/authentic/src/authentic2/a2_rbac/signal_handlers.py\", line 108, in post_migrate_update_role_admins", "    update_user_admin_roles_permission()", "  File \"/home/cazino/src/authentic/src/authentic2/a2_rbac/management.py\", line 169, in update_user_admin_roles_permission", "    assert len(perm.roles.all()) == 1", "AssertionError"], "stdout": "", "stdout_lines": []}

De façon amusante, en relançant le migrate_schemas une deuxième fois, ça passe.

Il se pourrait que ce soit récurrent, dixit Thomas J qui a souvent une erreur a2 qui arrive une première fois et qui passe en relançant ansible (mais pas sûr que ce soit cette trace précise à tous les coups).

Historique

#2

Mis à jour par Valentin Deniaud il y a plus de 3 ans

Il y avait un bug de création de permissions en double (en bref), c'est résolu mais pour réparer la db il faut taper un authentic2-multitenant-manage check-and-repair --repair --noinput (je crois).

#3

Mis à jour par Benjamin Dauvergne il y a plus de 3 ans

De façon amusante, en relançant le migrate_schemas une deuxième fois, ça passe.

Oui c'est le résultat d'une optimisation dans migrate_schemas: le bug est dans un post_migrate et migrate_schemas n'exécute pas du tout les migrations ni les signaux post_migrate si elles sont toutes déjà appliquées.

Formats disponibles : Atom PDF