Skip to content

Plantage du cron Publi2Slow en cours d’excursion si S2low est instable (cas où la récupération des PDF ne fonctionne pas bien)

Code

voir PR de travail (à ce jour uniquement pour l'analyse des causes)
Draft: Plantage du cron Publi2Slow en cours d’e... (!18)

Contexte

Le 24 avril 2024, le service S2low est instable :

  • Dans l'interface de S2low, la création de nouveau compte plante.
  • La récupération des PDF des actes par Publi2Slow via l'API S2low fonctionne très mal

voir log : /var/publis2low/log/sysadmin/cron/publis2low_cron_2024-04-24_18.30.01.log

Quand la récupération des PDF des actes par Publi2Slow via l'API S2low fonctionne très mal

3 comportements constatés du CRON de récupération des actes par Publi2Slow via l'API S2low quand S2low est instable dans l'envoie des fichiers PDF.

Cas 0 - PDF récupéré sans soucis

Publi2Slow récupère le PDF en moins d'une 1 seconde. C'est le fonctionnement nominal.

Fichier : 99_AU-974-249740093-20240411-2024_D_018-AU-1-1_1.pdf
     ------------------------------------------------------
     API request URL ---> https://www.s2low.org/modules/actes/actes_download_file.php?tampon=true&file=36062157
     API response ---> 200 (code HTTP) en 0.548546 seconde(s)
     ------------------------------------------------------

Cas 1 - PDF non récupéré (réponse de S2low très lente et contenu du fichier non envoyé)

La réponse de S2low est très lente (+ 100 secondes) et un code HTTP 302 (redirection temporaire) est renvoyé par l'API S2low en lieu est place d'un code HTTP 200.

Fichier : 99_DE-974-249740093-20240307-2024_C_008-DE-1-1_1.pdf
     ------------------------------------------------------
     API request URL ---> https://www.s2low.org/modules/actes/actes_download_file.php?tampon=true&file=35441922
     API response ---> 302 (code HTTP) en 132.165939 seconde(s)
     ------------------------------------------------------

Actuellement :

  • Publi2Slow n'utilise pas de fichier temporaire, un fichier PDF vide est donc créé au début de la requête vers S2low.
  • Le PDF est présent (mais vide) et Publi2Slow ajoute donc l'acte en base de données.
  • L'acte avec un PDF vide ne sera jamais mis à jour par Publi2Slow.
  • Seule solution : supprimer tous les actes de la collectivité concernée et relancer l'import complet (et donc utiliser comme date d'affichage des actes la date du ré-import). Cette solution nécessite une intervention technique sur le serveur.

Remédiation (non planifié / estimation : 2/3 jours avec mise en prod) :

  • Ne pas enregistrer l'acte en base de données si un de ses PDF est vide. Ainsi, l'acte et ses PDF seront traités aux prochains passages du CRON quand l'API de S2low répondra normalement.

Préconisation pour la réécriture du logiciel Publi2Slow :

  • Prise en compte de cas de figure au moment de l'import.
  • Permettre de relancer manuellement l'import d'un acte et de ses pièces jointes.

Cas 2 - L'API de S2low ne répond pas : le CRON s'arrête

Lors de la récupération d'un fichier PDF par PubliS2low :

  • il n'y a pas de réponse du serveur S2low,
  • le CRON de PubliS2low s'arrête brutalement.
Fichier : 99_DE-974-249740092-20240301-2024_C_012-DE-1-1_1.pdf
     ------------------------------------------------------
     API request URL ---> https://www.s2low.org/modules/actes/actes_download_file.php?tampon=true&file=35441923

Actuellement :

  • Le CRON de Publi2Slow traite toutes les collectivités de manières séquentielle.
  • Un plantage du CRON à cause d'une requête à l'API S2low qui n’aboutit pas stoppe la récupération des actes de toutes les collectivités à minima pour 24h.

Remédiation (non planifié) :

  • Pas de solution encore identifié

Préconisation pour la réécriture du logiciel Publi2Slow :

  • Gestion non séquentielle et non bloquant de la récupération des actes.
  • Relance de la récupération des actes dès que S2low répond normalement.
Edited by Fabrice Gangler