Projet

Général

Profil

Bug #36560

warning aux lancement des serveurs

Ajouté par Nicolas Roche il y a plus de 4 ans. Mis à jour il y a plus de 4 ans.

Statut:
Fermé
Priorité:
Bas
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
30 septembre 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Quand je lance les serveurs à la main (ex passerelle-server, combo-sever),
j'ai un warning sur les migrations qui je pense s'applique au schéma public :

You have 211 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): actesweb, admin, airquality, api_entreprise, api_particulier, arcgis, arpege_ecp, astregs, atal, atos_genesys, auth, base, base_adresse, bdp, cartads_cs, choosit, cityweb, clicrdv, cmis, common, contenttypes, csvdatasource, family, feeds, gdc, gesbac, jsondatastore, mdel, mellon, mobyt, okina, opengis, orange, ovh, oxyd, pastell, phonecalls, sessions, solis, sp_fr, vivaticket.
Run 'python manage.py migrate' to apply them.


Fichiers

Révisions associées

Révision 89e088a6 (diff)
Ajouté par Nicolas Roche il y a plus de 4 ans

migrate_schemas: remove warning about migration of public schema (#36560)

Historique

#1

Mis à jour par Nicolas Roche il y a plus de 4 ans

J'ai l'impression que ça fonctionne chez moi.
J'entends par là que ça supprime le warning et que ça n'empêche pas de jouer les migrations sur les autres tenants.

#2

Mis à jour par Nicolas Roche il y a plus de 4 ans

  • Statut changé de Solution proposée à En cours

arf, sauf qu'il ne m'affiche plus non plus les warnings sur les migrations à faire pour les autres tenants.

#3

Mis à jour par Frédéric Péters il y a plus de 4 ans

Les migrations doivent être jouées sur tous les tenants (et passer ainsi sur le schéma "public"). (et si tu le fais pas c'est pas grave si tu sais que tu ne vas pas sur les tenants). (je zapperais ce ticket).

#4

Mis à jour par Nicolas Roche il y a plus de 4 ans

Là j'ai remplacé les warning du tenant public par ceux de hobo.multitenant (enfin je crois).

(je zapperais ce ticket)

yep, c'est parce que je devenais fou avec toutes ces migrations qui s'accumulaient sans que j'arrive à les appliquer.
(maintenant je sais que c'est normal, ouf)

#5

Mis à jour par Frédéric Péters il y a plus de 4 ans

Mais, tu peux juste appliquer les migrations et que ça s'arrête là ?

#6

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

Nicolas Roche a écrit :

Là j'ai remplacé les warning du tenant public par ceux de hobo.multitenant (enfin je crois).

(je zapperais ce ticket)

yep, c'est parce que je devenais fou avec toutes ces migrations qui s'accumulaient sans que j'arrive à les appliquer.
(maintenant je sais que c'est normal, ouf)

Je ne vois pas trop ce que tu fais là, tu écrases applied_migrations à chaque tour de ta boucle, je dirai que le plus simple ce serait de vider complètement check_migrations(), ou vraiment si tu veux le faire tourner d'ajouter une option par défaut à False (et dans ce cas je pense que tu pourrais juste utiliser with tenant_context(tenant): super().check_migrations()).

Mais vraiment juste mettre pass ça me parait suffisant.

#7

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

Frédéric Péters a écrit :

Mais, tu peux juste appliquer les migrations et que ça s'arrête là ?

Je n'utilise pas cette commande, mais pour ceux qui le font, avec beaucoup de tenant ça va couter un peu cher un migrate_schemas à chaque fois non ? Déjà que je trouve que runserver met longtemps à se lancer (certainement à cause de ce check).

#8

Mis à jour par Frédéric Péters il y a plus de 4 ans

Sauf que, j'avais oublié, #31042 et du coup le schéma public n'est plus une base fiable. Mais faudrait écrire ça quelque part. Et idéalement pas trop écrire de code, là il y a toute une part,

            app_labels = []
            for app in apps.get_app_configs():
                if app.name in settings.TENANT_APPS:
                    app_labels.append(app.label)
            loader = MigrationLoader(None)
            loader.load_disk()
            all_migrations = set([(app, migration) for app, migration in loader.disk_migrations if app in app_labels])
            for tenant in TenantMiddleware.get_tenants():
                connection.set_schema(tenant.schema_name, include_public=False)
                applied_migrations = self.get_applied_migrations(app_labels)
                if options.get('fake') or options.get('migration_name') or options.get('app_label'):
                    # never skip migrations if explicit migration actions
                    # are given.
                    applied_migrations = []

qui se trouve déjà dans migrate_schemas.

Est-ce qu'on pourrait arriver à, genre, avoir là :

all_labels, all_migrations = get_all_labels_and_migrations()
for tenant in TenantMiddleware.get_tenants():
    connection.set_schema(tenant.schema_name, include_public=False)
    applied_migrations = self.get_applied_migrations(app_labels)
    (...)

et ici,

all_labels, all_migrations = get_all_labels_and_migrations()
tenants = TenantMiddleware.get_tenants()
if tenants:
    connection.set_schema(tenants[0].schema_name, include_public=False)
    applied_migrations = self.get_applied_migrations(app_labels)
    plan = all_migrations - applied_migrations
    if plan:
        print(...)
#9

Mis à jour par Frédéric Péters il y a plus de 4 ans

un migrate_schemas à chaque fois non

Je parlais de lancer migrate_schemas un coup quand il voit qu'il le message, dans l'idée que ça allait au moins s'inscrire dans public et faire disparaitre le message, avant de regarder attentivement et de voir que public n'était plus utilisé, etc.

#10

Mis à jour par Frédéric Péters il y a plus de 4 ans

(et sans revenir sur l'historique qui nous amène donc ici, ça me va de juste voir commitée la version avec "pass" et ignorer tout ça)

#12

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

  • Statut changé de Solution proposée à Solution validée
#13

Mis à jour par Nicolas Roche il y a plus de 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 89e088a65f1d938924c991606f30f71259b39e4d
Author: Nicolas ROCHE <nroche@entrouvert.com>
Date:   Mon Sep 30 17:39:02 2019 +0200

    migrate_schemas: remove warning about migration of public schema (#36560)
#14

Mis à jour par Frédéric Péters il y a plus de 4 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF