nosdeputes.fr icon indicating copy to clipboard operation
nosdeputes.fr copied to clipboard

Problème d'import des données de députés (erreurs 500)

Open maximerivolet opened this issue 2 years ago • 8 comments

Bonjour,

Nous avons une routine qui récupère tous les matins les données des députés. Depuis le 27/03, nous observons des erreurs tous les jours. En effet, il y a plusieurs URLs (jamais les mêmes) qui tombent en erreur 500.

Ci-dessous ce que nous observons dans nos logs :

error: An error occured while retriving depute from nosdeputes.fr: {"Slug":"cedric-roussel","retryCount":0,"service":"user-service"}
error: An error occured while retriving depute from nosdeputes.fr: {"Slug":"cedric-roussel","retryCount":1,"service":"user-service"}
error: An error occured while retriving depute from nosdeputes.fr: {"Slug":"cedric-roussel","retryCount":2,"service":"user-service"}
error: undefined {"config":{"headers":{"Accept":"application/json, text/plain, */*","User-Agent":"axios/0.26.1"},"maxBodyLength":-1,"maxContentLength":-1,"method":"get","timeout":0,"transformRequest":[null],"transformResponse":[null],"transitional":{"clarifyTimeoutError":false,"forcedJSONParsing":***,"silentJSONParsing":***},"url":"https://www.nosdeputes.fr/cedric-roussel/json","xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN"},"status":500}
/home/runner/work/Nucleus/Nucleus/node_modules/axios/lib/core/createError.js:16
  var error = new Error(message);
              ^
Error: Request failed with status code 500

Les urls que nous appelons sont dans ce format : https://www.nosdeputes.fr/cedric-roussel/json

Nos déploiements se font vers 06h30, si ça peut vous aider de votre côté.

Egalement, une capture d'écran d'une url testée avec retour 500 :

image

Cordialement,

maximerivolet avatar Apr 01 '22 12:04 maximerivolet

Côté logs apparemment l'erreur correspond à The template "parlementaireSuccess.php" does not exist or is unreadable in "". ce qui est assez étrange vu que le fichier est bien là et même lu pour répondre aux 95% des autres appels. @teymour une idée d'où ça pourrait venir ? Un problème d'io face à trop de requetes simultanées ?

Après je note tout de même que vous faites les 600 appels en moins de 10 secondes, ajouter un peu de throttle avec un sleep de quelques dizièmes de seconde pourrait probablement aider et être plus sympa vis à vis de nos serveurs ;)

boogheta avatar Apr 01 '22 13:04 boogheta

L'histoire de template était un effet de bord. Le problème était qu'avec la nouvelle version de php, il faut forcement faire un count sur un array or lorsqu'un parlementaire n'avait qu'un seul mandat, on le fait sait sur null.

b616478 corrige ce problème.

https://www.nosdeputes.fr/cedric-roussel/json fonctionne maintenant depuis chez moi.

teymour avatar Apr 01 '22 13:04 teymour

Bonjour,

Pour information, nous avons toujours le problème. Jusqu'ici, nous n'avions pas de problèmes à récupérer les données. Il est à noter qu'il y a déjà un mécanisme de throttle en place.

maximerivolet avatar Apr 05 '22 22:04 maximerivolet

Est ce qu'il est possible d'avoir une url qui illustre le problème ? Car celle fournie fonctionne pour moi. Vous avez toujours un problème sur cedric roussel ou s'agit-il de l'exploitation d'une autre requête ? Avoir une heure particulière de requête qui aurait échoué serait également utile pour essayer de remontrer les logs et comprendre l'origine du problème.

teymour avatar Apr 06 '22 09:04 teymour

Nos tests sont effectués tous les matins, à 06h07 (préproduction) et 06h27 (production). Il ne faut pas voir la requête à une URL comme une erreur constante. En effet, on obtient une erreur 500 sur certaines URLs.

Depuis le 06 avril en production, on a carrément eu une erreur lors de l'import des groupes parlementaires (url : https://www.nosdeputes.fr/organismes/groupe/json) :

info: Retrieving groupes from nosdeputes.fr... {"service":"user-service"}
error: undefined {"config":{"headers":{"Accept":"application/json, text/plain, */*","User-Agent":"axios/0.26.1"},"maxBodyLength":-1,"maxContentLength":-1,"method":"get","timeout":0,"transformRequest":[null],"transformResponse":[null],"transitional":{"clarifyTimeoutError":false,"forcedJSONParsing":***,"silentJSONParsing":***},"url":"https://www.nosdeputes.fr/organismes/groupe/json","xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN"},"status":500}

Pour ce cas, on n'a pas de mécanisme de retry en place, mais pour autant, depuis des mois cet import est en place sans erreurs.

Pour la préproduction, la partie groupe parlementaire passe bien, mais on a des erreurs 500 sur les députés pour les urls ci-dessous. Je préfère insister, il s'agit de problèmes sur le moment, il faut regarder dans les logs ce qui se passe. J'ai testé au moment où j'ai rédigé ce message, les urls citées sont bien accessibles.

  • 07 avril à 06h07 : https://www.nosdeputes.fr/annaig-le-meur/json (50 députés importés avant l'erreur)
  • 08 avril à 06h07 : https://www.nosdeputes.fr/valerie-oppelt/json (88 députés importés avant l'erreur)
  • 09 avril à 06h07 : https://www.nosdeputes.fr/eric-girardin/json (510 députés importés avant l'erreur)

Si vous avez besoin de plus d'informations, n'hésitez pas à me demander.

maximerivolet avatar Apr 09 '22 18:04 maximerivolet

Merci pour ce retour.

Je pense que ca vient d'une mauvaise gestion de l'invalidation de cache dans memcache suite à la migration php7.4.

J'ai changé le moteur de cache du site pour ne plus utiliser memcache. J'ai l'impression que la situation s'est améliorée. Mais des erreurs semble revenues depuis quelques heures.

Le problème pourrait donc venir d'un cache utilisé sur la partie interrogation de la base données (via l'ORM Doctrine). Il faut que je trouve si c'est effectivement utilisé et si oui comment le désactiver.

L'investigation continue...

teymour avatar Apr 12 '22 10:04 teymour

Hello, je travaille avec @goldenivan sur la routine d'import des données. Du coup je me permets de vous faire un petit update :)

Depuis ton retour @teymour, les imports de notre côté se passent sans erreur, donc a priori vous avez vu juste ;)

Je laisse @goldenivan clore cette issue et on la réouvre si le problème se représente :)

Merci pour votre aide !

KevinBacas avatar Apr 14 '22 11:04 KevinBacas

Cool. Merci pour ce retour.

La solution trouvée n'est à mon sens pas très idéale pour nous. Je propose qu'on la laisse ouverte en attendant de trouver le vrai problème avec Memcache, si ca vous va.

teymour avatar Apr 14 '22 12:04 teymour