Projet

Général

Profil

Bug #10877

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

Ajouté par Frédéric Péters il y a presque 8 ans. Mis à jour il y a presque 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
10 mai 2016
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non
Club:
Non

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...

Historique

#1

Mis à jour par Benjamin Dauvergne il y a presque 8 ans

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

Mis à jour par Thomas Noël il y a presque 8 ans

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

Mis à jour par Benjamin Dauvergne il y a presque 8 ans

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

Mis à jour par Frédéric Péters il y a presque 8 ans

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

Mis à jour par Benjamin Dauvergne il y a presque 8 ans

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

Mis à jour par Frédéric Péters il y a presque 5 ans

  • Statut changé de Nouveau à Fermé

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

Formats disponibles : Atom PDF