etalab / transport-site

Rendre disponible, valoriser et améliorer les données transports
https://transport.data.gouv.fr
184 stars 28 forks source link

ResourceHistoryJob : GTFS non historisé #3984

Closed AntoineAugusti closed 1 week ago

AntoineAugusti commented 3 weeks ago

Symptome : le GTFS sur le JDD de Saint-Tropez provenant de Pysae n'est pas historisé/validé. La ressource concernée est 81773 et URL https://pysae.com/api/v2/groups/st-tropez/gtfs/pub

Il semble y avoir un problème quand on fait un snapshot du GTFS, qu'on enregistre les métadonnées dans resource_history et les données en object storage.

En base de données, je remarque des erreurs.

select *
from oban_jobs
where args::varchar like '%81773%' and state = 'discarded'

{"{\"at\": \"2024-06-05T12:08:17.155802Z\", \"error\": \" (Oban.PerformError) Transport.Jobs.Workflow failed with {:error, \\"Job 53999093 has failed: \\\\"%Jason.EncodeError{message: \\\\\\\\"invalid byte 0xE9 in <<97, 116, 116, 97, 99, 104, 109, 101, 110, 116, 59, 32, 102, 105, 108, 101, 110, 97, 109, 101, 61, 78, 97, 118, 101, 116, 116, 101, 95, 83, 97, 105, 110, 116, 95, 84, 114, 111, 112, 101, 122, 95, 40, 104, 111, 114, 97, 105, 114, 101, ...>>\\\\\\\\"}\\\\". Workflow is stopping here\\"}\", \"attempt\": 1}","{\"at\": \"2024-06-05T12:11:05.049075Z\", \"error\": \" (Oban.PerformError) Transport.Jobs.Workflow failed with {:error, \\"Job 53999093 (Transport.Jobs.ResourceHistoryJob) has a conflict. Workflow is stopping here\\"}\", \"attempt\": 2}","{\"at\": \"2024-06-05T12:11:25.031645Z\", \"error\": \"** (Oban.PerformError) Transport.Jobs.Workflow failed with {:error, \\"Job 53999093 (Transport.Jobs.ResourceHistoryJob) has a conflict. Workflow is stopping here\\"}\", \"attempt\": 3}"}

Le ZIP est nommé Navette_Saint_Tropez_(horaires_été_2024).zip. Un problème d'encodage ?

Il est probable que le job survienne dans Transport.Jobs.ResourceHistoryJob

AntoineAugusti commented 3 weeks ago

@ptitfred Est-ce que ce problème te tente ? 🔠🐛

ptitfred commented 2 weeks ago

J'ai contacté Pysae via leur formulaire avec le message suivant :

Bonjour,

Je travaille au Point d'Accès National (https://transport.data.gouv.fr). Nous rencontrons un souci avec la ressource GTFS du Réseau urbain Navette Saint-Tropez.

A des fins d'historisation, nous téléchargeons régulièrement les resources déclarées sur notre portail. Quand la réponse HTTP inclut un header "content-disposition", nous nous efforçons de le respecter pour reprendre le "filename" ainsi suggéré.

Pour la ressource GTFS de la Navette Saint-Tropez, ce header ne semble pas respecter l'encodage standard. Je suspecte un double encodage suite à une manipulation depuis un poste Windows.

Voici l'URL concernée : https://pysae.com/api/v2/groups/st-tropez/gtfs/pub

Le plus rapide pour reproduire est sans doute d'utiliser curl avec l'option --dump-header ; par exemple :

curl --dump-header st-tropez-headers.txt https://pysae.com/api/v2/groups/st-tropez/gtfs/pub -o /dev/null

Je reste à votre disposition pour plus de détail si nécessaire,
Frédéric