Bug #10877
les scripts d'init qui lancent des migrations sont interactifs et incompatibles avec systemd
0%
Description
(quand ils demandent si on veut supprimer un modèle disparu)
mai 10 15:31:41 passerelle passerelle[31446]: Any objects related to these content types by a foreign key will also mai 10 15:31:41 passerelle passerelle[31446]: be deleted. Are you sure you want to delete these content types? mai 10 15:31:41 passerelle passerelle[31446]: If you're unsure, answer 'no'. mai 10 15:31:41 passerelle passerelle[31446]: Type 'yes' to continue, or 'no' to cancel: Traceback (most recent call last): mai 10 15:31:41 passerelle passerelle[31446]: File "/usr/lib/passerelle/manage.py", line 10, in <module> mai 10 15:31:41 passerelle passerelle[31446]: execute_from_command_line(sys.argv) mai 10 15:31:41 passerelle passerelle[31446]: File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 385, in execute_f mai 10 15:31:41 passerelle passerelle[31446]: utility.execute() mai 10 15:31:41 passerelle passerelle[31446]: File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 377, in execute mai 10 15:31:41 passerelle passerelle[31446]: self.fetch_command(subcommand).run_from_argv(self.argv) mai 10 15:31:41 passerelle passerelle[31446]: File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 288, in run_from_argv mai 10 15:31:41 passerelle passerelle[31446]: self.execute(*args, **options.__dict__) mai 10 15:31:41 passerelle passerelle[31446]: File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 338, in execute mai 10 15:31:41 passerelle passerelle[31446]: output = self.handle(*args, **options) mai 10 15:31:41 passerelle passerelle[31446]: File "/usr/lib/python2.7/dist-packages/hobo/multitenant/management/commands/migrate_schemas.py", l mai 10 15:31:41 passerelle passerelle[31446]: self.run_migrations(tenant.schema_name, settings.TENANT_APPS) mai 10 15:31:41 passerelle passerelle[31446]: File "/usr/lib/python2.7/dist-packages/hobo/multitenant/management/commands/migrate_schemas.py", l mai 10 15:31:41 passerelle passerelle[31446]: command.execute(*self.args, **self.options) mai 10 15:31:41 passerelle passerelle[31446]: File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 338, in execute mai 10 15:31:41 passerelle passerelle[31446]: output = self.handle(*args, **options) mai 10 15:31:41 passerelle passerelle[31446]: File "/usr/lib/python2.7/dist-packages/django/core/management/commands/migrate.py", line 165, in h mai 10 15:31:41 passerelle passerelle[31446]: emit_post_migrate_signal(created_models, self.verbosity, self.interactive, connection.alias) mai 10 15:31:41 passerelle passerelle[31446]: File "/usr/lib/python2.7/dist-packages/django/core/management/sql.py", line 268, in emit_post_migr mai 10 15:31:41 passerelle passerelle[31446]: using=db) mai 10 15:31:41 passerelle passerelle[31446]: File "/usr/lib/python2.7/dist-packages/django/dispatch/dispatcher.py", line 198, in send mai 10 15:31:41 passerelle passerelle[31446]: response = receiver(signal=self, sender=sender, **named) mai 10 15:31:41 passerelle passerelle[31446]: File "/usr/lib/python2.7/dist-packages/django/contrib/contenttypes/management.py", line 76, in upd mai 10 15:31:41 passerelle passerelle[31446]: Type 'yes' to continue, or 'no' to cancel: """ % content_type_display) mai 10 15:31:41 passerelle passerelle[31446]: EOFError: EOF when reading a line mai 10 15:31:41 passerelle passerelle[31446]: .. done. mai 10 15:31:41 passerelle passerelle[31446]: Collect static files...
History
Updated by Benjamin Dauvergne over 8 years ago
Action immédiate, ajouter --noinput partout.
À voir ensuite si on déplace le lancement des migrations dans postinst comme je viens de
le faire dans authentic (mais ça pose le problème des migrations du à la mise à
jour d'une bibliothèque tierce qui ne sont pas lancés automatiquement, problème
qu'on a déja plus ou moins sauf avec python-hobo qui possède un trigger
permettant de relancer les services) ou si on reste comme on est.
Je trouve qu'avoir un restart/reload rapide est quand même bien utile et on
utilise assez peu d'applications Django tierces fournissant des modèles il me
semble qu'on a que python-hobo et django-mellon.
Updated by Thomas Noël over 8 years ago
Benjamin Dauvergne a écrit :
Action immédiate, ajouter --noinput partout.
Yep, je viens de le faire sur hobo, welco, combo, passerelle, fargo, corbo, chrono.
À voir ensuite si on déplace le lancement des migrations dans postinst
Why not. Mais il faudra alors avoir une commande pour les lancer autrement de façon simple (et ça ne sera pas dans le script d'init, parce que systemd arrive qui n'accepte que start/stop/restart/reload).
(Me reste aussi en tête l'idée que "start" lance une seule migration, sur un des tenants/schemas actif. Et si une migration a eu lieu, alors lance la migration sur les autres schemas.)
Updated by Benjamin Dauvergne over 8 years ago
Coté authentic j'ai fait une action "update" unique qui fait collectstatic + migrate et est appellé dans le postinst.
Concernant la vérification d’existence de migrations sudo -u <app> <app>-manage migrate_schemas -l | grep '\[ \]'
te dit si il y a des migrations à exécuter, on pourrait mettre ça dans le restart mais je ne suis pas super fan quand même.
Dans tous les cas on aura pas de migrate automatique à la mise à jour d'une dépendance qui est un peu le seul vrai problème avec le non lancement de collecstatic lors des mises à jour de thème, pour les thèmes un trigger hobo-theme m'irait bien.
Updated by Frédéric Péters over 8 years ago
Coté authentic j'ai fait une action "update" unique qui fait collectstatic + migrate et est appellé dans le postinst.
Ce qui ne va pas tenir avec systemd où on ne peut pas comme ça ajouter de verbes supplémentaires, il me semble.
(Aussi, on ne pouvait pas savoir, ça a cassé les déploiements dans docker, où seul le /var/lib/authentic2-multitenant/tenants était persistant (leur problème, je leur signale).)
Updated by Benjamin Dauvergne over 8 years ago
Les verbes que systemd ne connaît pas il les passe gentiment au script LSB sans rien toucher il me semble (enfin c'est mon expérience sur les jessie avec authentic), l'autre solution c'est d'en faire une commande hobo.agent.common on l'aura partout.
Updated by Frédéric Péters over 5 years ago
- Status changed from Nouveau to Fermé
On n'a plus ces moments interactifs, on utilise systemd partout.