SDIS62 / prevarisc-passerelle-platau

Passerelle permettant d'automatiser les échanges entre Prevarisc et Plat'AU
Other
9 stars 4 forks source link

Problème import pièces jointes : Connection refused for URI #35

Closed SDIS33 closed 1 year ago

SDIS33 commented 1 year ago

Bonjour,

Depuis le début du mois, nous rencontrons un dysfonctionnement erratique du script de récupération des pièces jointes avec, à chaque fois, l'erreur suivante rencontrée lors de l'exécution de la commande import-pieces de la passerelle :

lun. 24 oct. 2022 02:00:01 CEST  --- Demarrage batch Import Pieces Jointes ---
Recherche de toutes les consultations versées (--force-non-pec) ...

In StreamHandler.php line 72:

  Connection refused for URI https://api.aife.economie.gouv.fr/mtes/platau/v8
  /consultations/recherche?numeroPage=0

In StreamHandler.php line 328:

  Connection refused for URI https://api.aife.economie.gouv.fr/mtes/platau/v8
  /consultations/recherche?numeroPage=0

import-pieces [-c|--config CONFIG] [--force-non-pec]

lun. 24 oct. 2022 02:00:31 CEST  --- Fin batch Import Pieces Jointes ---

Pour information, la commande est lancée tous les jours à 2h du matin et nous avons rencontré cette erreur :

Nous avions rencontré cette erreur une seule fois auparavant au mois de septembre sur la V7, alors que nous utilisons la passerelle en production depuis le 01/06.

Est-ce lié à des opérations de maintenance de Plat'AU la nuit ? Avez-vous une explication ?

Merci d'avance.

kdubuc commented 1 year ago

Je pense que cela vient de plat'au qui renvoie des erreurs de connexion, d'autant que l'équipe support a évoqué des erreurs du service de download / upload de pièces jointes. Je peux vous confirmer cela la semaine prochaine.

SDIS33 commented 1 year ago

Suite à la visio hebdomadaire Synchro-éditeurs DématADS de ce matin, il semblerait que cette erreur soit liée à une problématique de gestion de certificat Syncplicity remontée par l'éditeur Antibia.

Apparemment, un autre éditeur avait aussi rencontré cette erreur et l'avait contournée en s'abstenant de vérifier le certificat.

kdubuc commented 1 year ago

on peut contourner la vérification du certificat, mais je déconseille pour des raisons de sécurité.

Rencontrez vous encore le problème d'import ?

SDIS33 commented 1 year ago

Il semble que le problème soit plus global...

En rebalayant les logs depuis le mois de septembre, nous avons rencontré cette erreur :

kdubuc commented 1 year ago

Donc cela concerne toutes les commandes. Et toujours avec une erreur Connection refused for URI ?

Cette erreur indique que la passerelle n'arrive pas à se connecter au service Plat'AU, soit pour des raisons internes (firewall qui bloque), ou externes (certificat invalide, serveur down ...). Toujours est il que le problème est du côté Plat'AU.

Essayez de changer la date du déclenchement du job (en soirée vers 19h, ou le matin vers 6h).

SDIS33 commented 1 year ago

Effectivement, toutes les commandes sont concernées, avec toujours la même erreur Connection refused for URI. Nous avons à nouveau rencontré ce problème cette nuit à 4h pour l'export d'avis...

J'ai décalé la date d'exécution des jobs en soirée pour voir si ça passe mieux. A suivre...

SDIS33 commented 1 year ago

Pas mieux, de nouveau la même erreur lors de l'import des consultations hier soir à 20h...

Serait-il possible d'ouvrir un ticket auprès du support Plat'AU concernant cette problématique ?

SDIS33 commented 1 year ago

Bonjoir,

Pour info, encore des connexions refusées par Plat'AU (en plus des déclarations précédentes) :

kdubuc commented 1 year ago

Pourriez vous ajouter un healthcheck dans votre job de synchro, afin de vérifier l'état de Plat'AU avant de lancer les commandes ?

Encore une fois l'erreur Connection refused for URI vient très certainement d'un problème Plat'AU (si ce n'est pas votre firewall). Il faudrait pouvoir confirmer ça de votre côté.

LD-SDIS33 commented 1 year ago

Nous allons procéder à l'ajout et réponse en retour du resultat

LD-SDIS33 commented 1 year ago

A priori, cela ne change rien. pour info, à 2 reprises dans les réunions visio synchro platau du mardi 11h30, il a été précisé par les intervenants que sur ce ticket, il n'est pas relevé d'erreur côté platau

SDIS33 commented 1 year ago

Etonnamment, le healthcheck ajouté dans le job de synchro depuis une semaine ne renvoit aucune erreur.

Mais les autres commandes renvoient quasiment quotidiennement la même erreur Connection refused for URI depuis le 14/12, au moins une fois par jour (job planifié toutes les 4h).

kdubuc commented 1 year ago

Je ne m'explique pas le côté aléatoire du problème. Une évolution de la passerelle essaiera de "mitiger" cela. Je vous tiens informé dans l'heure.

kdubuc commented 1 year ago

Voici une mise à jour de la passerelle : https://github.com/SDIS62/prevarisc-passerelle-platau/commit/de4fb35de967a9d150a593569d3db8ce46fe6924

Elle va essayer de rejouer les requêtes qui posent problème (à savoir celles qui renvoient un code 429, 500, 503).

Cela permet de contourner les erreurs aléatoires retournées par le contexte d'exécution de la passerelle.

Une précision : Si la passerelle ne peut pas communiquer avec Plat'AU, cela ne changera rien sur le comportement actuel, elle vous retournera le même problème. A ce moment, il faudra approfondir sur le contexte d'execution de la passerelle plutôt que sur la passerelle en elle même.

J'attends vos retours.

LD-SDIS33 commented 1 year ago

Merci pour votre réponse. A regret de ne pouvoir faire retour avant mi fevrier sur cette mise a jour de la passerelle

kdubuc commented 1 year ago

poke @LD-SDIS33 ?

LD-SDIS33 commented 1 year ago

Résolu, peut être clôturé

SDIS33 commented 1 year ago

Comme indiqué lors de la visio hebdomadaire Synchro-éditeurs DématADS du 14/03, nous rencontrons toujours cette erreur quasi quotidiennement et elle concerne toutes les commandes d'échange avec Plat'AU (import/export).

kdubuc commented 1 year ago

Pour approfondir sur le contexte d'execution de la passerelle, pouvez vous détailler sa configuration ? Est elle connectée directement sur internet, y'a t'il un firewall au dessus d'elle ?

SDIS33 commented 1 year ago

Rien de spécial au niveau de le configuration de la passerelle, qu'entendez-vous par là ? Nous avons bien un firewall, mais celui-ci laisse passer toutes les requêtes sur le port 443.

kdubuc commented 1 year ago

Généralement, une erreur Connection refused for URI peut arriver quand :

Dans votre script, pouvez vous ajouter des sleep pour temporiser l'enchainement des exécutions (5 secondes par exemple) ?