Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeError dans la commande « update_index » #3833

Closed
gustavi opened this issue Sep 6, 2016 · 7 comments
Closed

TypeError dans la commande « update_index » #3833

gustavi opened this issue Sep 6, 2016 · 7 comments
Labels
C-Back Concerne le back-end Django S-BUG Corrige un problème

Comments

@gustavi
Copy link
Contributor

gustavi commented Sep 6, 2016

Via Sentry sur la beta :


TypeError: 'NoneType' object is not iterable
  File "zds-site/manage.py", line 56, in <module>
    execute_from_command_line(sys.argv)
  File "django/core/management/__init__.py", line 354, in execute_from_command_line
    utility.execute()
  File "django/core/management/__init__.py", line 346, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "django/core/management/base.py", line 394, in run_from_argv
    self.execute(*args, **cmd_options)
  File "raven/contrib/django/management/__init__.py", line 41, in new_execute
    return original_func(self, *args, **kwargs)
  File "django/core/management/base.py", line 445, in execute
    output = self.handle(*args, **options)
  File "haystack/management/commands/update_index.py", line 183, in handle
    return super(Command, self).handle(*items, **options)
  File "django/core/management/base.py", line 623, in handle
    label_output = self.handle_label(label, **options)
  File "haystack/management/commands/update_index.py", line 188, in handle_label
    self.update_backend(label, using)
  File "haystack/management/commands/update_index.py", line 276, in update_backend
    for pk, rec_id in index_pks[start:upper_bound]:

La commande en détails : manage.py update_index --remove --age=1

C'est arrivé une dizaine de fois sur les trentes derniers jours.

@gustavi gustavi added S-BUG Corrige un problème C-Back Concerne le back-end Django labels Sep 6, 2016
@DevHugo
Copy link
Contributor

DevHugo commented Sep 6, 2016

C'est sur la prod, je suppose.

Sans plus d'information, ça va être compliqué de debug, dans une heure creuse, et pas en même temps que la tache cron update_index, pourrais-tu relancer l'indexation des contenus, forums avec la commande python manage.py rebuild_index et nous envoyer le retour de cette commande. Comme ça on aura une idée de quel objet retourne None.

Je pense que un des champs de ces objets ou de ceux la retourne None

@vhf
Copy link
Contributor

vhf commented Sep 6, 2016

C'est sur la beta @DevHugo . Rien de louche quand on lance l'update_index:

Indexing 0 Sujets
Indexing 0 posts
Indexing 0 SearchIndexContents
Indexing 1002 SearchIndexContainers
Indexing 3883 SearchIndexExtracts

Je regarde le rebuild.

Avec le setup actuel, on lance simultanément ces deux commandes :

ExecStart=/opt/zds/zdsenv/bin/python /opt/zds/zds-site/manage.py index_content --only-flagged
ExecStart=/opt/zds/zdsenv/bin/python /opt/zds/zds-site/manage.py update_index --remove --age=1

@DevHugo
Copy link
Contributor

DevHugo commented Sep 7, 2016

Merci vhf.

Peut-être qu'envoyer les deux commandes « simultanément » peut poser des soucis mais je pense pas que ça soit liés à l'erreur remonté par Sentry.

Petite explication: manage.py index_content --only-flagged permet de copier les différentes informations du contenu publié dans les tables de recherche dans la base de données (on a des tables spécifiques pour l’indexation du contenu de la recherche). Cette opération est coûteuse en ressource et peux prendre quelques secondes.

La commande manage.py update_index, est une commande de la librairie Haystack (celle qui fait le « pont » entre les données et Solr), en gros, elle prend les données dans les tables de recherche et fait les requêtes d'indexation sur le moteur de recherche Solr.

Si la requête manage.py index_content n'a pas terminé et que la commande manage.py update_index est lancé, on peut penser que des données partielle serait indexé ce qui serait pas très cool.

Si c'est possible, il faudrait lancer la première commande puis la seconde dans un deuxième temps. On peut en faire un ticket comme ça on en discute.

@vhf
Copy link
Contributor

vhf commented Nov 2, 2016

@DevHugo on a des problèmes avec les résultats de recherche sur la prod.

Ici, tu dis

et pas en même temps que la tache cron update_index

Mais ce cron n'existe ni sur la beta, ni sur la prod, ni dans la doc. Peux-tu expliquer ce qu'il en est ?

Si tu as une idée pour #3942, c'est aussi volontiers. Merci :)

@DevHugo
Copy link
Contributor

DevHugo commented Nov 2, 2016

Dans le update.md tu as la commande exacte qui est « ExecStart=/opt/zdsenv/bin/python /opt/zdsenv/ZesteDeSavoir/manage.py update_index --remove --age=1 ». Cette commande update_index est la depuis le tout début du projet. La commande est expliqué ici dans la doc de haystack. En gros rebuild_index, ça supprime tous les index et ça les re-rajoute dans Solr. Update_index, permet au lieu de supprimer tous les index et de les recréé, permet d'ajouter uniquement la différence entre deux commandes update_index.

Ceci dit on pourrais faire un doc qui liste toute les taches cron à créé pour la prod, on pourrait rajouter ça ici.

@vhf
Copy link
Contributor

vhf commented Nov 3, 2016

Ok merci @DevHugo ! Je cherchais dans les crons, vu que c'en n'est pas j'avais aucune chance.

Maintenant c'est plus clair, et effectivement faudra documenter ces timers.

@pierre-24
Copy link
Member

Bon a priori :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-Back Concerne le back-end Django S-BUG Corrige un problème
Projects
None yet
Development

No branches or pull requests

4 participants