Project

General

Profile

Bug #10877

les scripts d'init qui lancent des migrations sont interactifs et incompatibles avec systemd

Added by Frédéric Péters almost 8 years ago. Updated over 4 years ago.

Status:
Fermé
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
10 May 2016
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No
Club:
No

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

#1

Updated by Benjamin Dauvergne almost 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.

#2

Updated by Thomas Noël (congés → 26 février) almost 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.)

#3

Updated by Benjamin Dauvergne almost 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.

#4

Updated by Frédéric Péters over 7 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).)

#5

Updated by Benjamin Dauvergne over 7 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.

#6

Updated by Frédéric Péters over 4 years ago

  • Status changed from Nouveau to Fermé

On n'a plus ces moments interactifs, on utilise systemd partout.

Also available in: Atom PDF