Projet

Général

Profil

Bug #53900

Une erreur de connexion pour un wscalls.* dans un champ commentaire provoque une trace..

Ajouté par Benjamin Dauvergne il y a presque 3 ans. Mis à jour il y a presque 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
10 mai 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

C'est là :

https://demarches-departement06.test.entrouvert.org/contacter-le-06/test-source-2/

au cas où le template serait changé ou l'erreur disparaîtrait, le template :

<p><!--StartFragment-->{{webservice.annuaire_interne|pprint}}<!--EndFragment--></p>

la définition du wscall :

https://demarches-departement06.test.entrouvert.org/backoffice/settings/wscalls/annuaire_interne/

Il me semble que le problème devrait être caché (mais je me trompe peut-être).


Fichiers


Demandes liées

Lié à w.c.s. - Bug #43901: crash 500 lors d'une SSLError/ConnectionError sur un champ commentaire avec un webservice.xxxFermé10 juin 2020

Actions

Révisions associées

Révision 2ca413d3 (diff)
Ajouté par Frédéric Péters il y a presque 3 ans

wscalls: handle connection errors (#53900)

Historique

#2

Mis à jour par Frédéric Péters il y a presque 3 ans

  • Sujet changé de Une erreur de connection pour un wscalls.* dans un champ commentaire provoque une trace.. à Une erreur de connexion pour un wscalls.* dans un champ commentaire provoque une trace..
#3

Mis à jour par Frédéric Péters il y a presque 3 ans

Il me semble que le problème devrait être caché (mais je me trompe peut-être).

Provoque une trace où/comment ?

Dans https://demarches-departement06.test.entrouvert.org/backoffice/settings/wscalls/annuaire_interne/

  • Notifier en cas d’erreur : non
  • Enregistrer en cas d’erreur : oui

Donc si c'était bien déjà comme ça, je dirais qu'en effet il ne devrait pas y avoir de notification de l'erreur.

#4

Mis à jour par Frédéric Péters il y a presque 3 ans

Exception:
  type = '<class 'wcs.qommon.errors.ConnectionError'>', value = 'error in HTTP request to XXX (HTTPSConnectionPool(host='...', port=443): Max retries exceeded with url: /... Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f6605aa6da0>: Failed to establish a new
connection: [Errno -2] Name or service not known')))'

Stack trace (most recent call first):
  File "/usr/lib/python3/dist-packages/wcs/qommon/misc.py", line 379, in _http_request
   377         raise ConnectionError('connection timed out while fetching the page')
   378     except requests.RequestException as err:
>  379         raise ConnectionError('error in HTTP request to %s (%s)' % (hostname, err))
   380     else:
   381         data = response.content

  locals:
     adapter = <requests.adapters.HTTPAdapter object at 0x7f65ffb31748>
     body = None
     cert_file = None
     headers = {'Accept': 'application/json'}
     hostname = 'XXX'
     method = 'GET'
     raise_on_http_errors = False
     session = <requests.sessions.Session object at 0x7f65ffccad68>
     splitted_url = SplitResult(...)
     timeout = 28
     url = '...'

  File "/usr/lib/python3/dist-packages/wcs/qommon/misc.py", line 397, in http_get_page
   395
   396 def http_get_page(url, **kwargs):
>  397     return _http_request(url, **kwargs)
   398
   399

  locals:
     kwargs = {'headers': {'Accept': 'application/json'}}
     url = '...'

  File "/usr/lib/python3/dist-packages/wcs/wscalls.py", line 153, in call_webservice
   151         response, status, data, dummy = misc._http_request(url, method='DELETE', headers=headers)
   152     else:
>  153         response, status, data, dummy = misc.http_get_page(url, headers=headers)
   154         request = get_request()
   155         if cache is True and request and hasattr(request, 'wscalls_cache'):

  locals:
     cache = True
     formdata = None
     headers = {'Accept': 'application/json'}
     key = '...'
     kwargs = {}
     method = 'GET'
     notify_on_errors = False
     parsed = ParseResult(...)
     payload = None
     post_data = {}
     post_formdata = False
     qs = '...'
     qs_data = {'...'}
     record_on_errors = True
     request = <wcs.compat.CompatHTTPRequest object at 0x7f6604527390>
     request_signature_key = ''
     unsigned_url = '...'
     url = '...'
     value = '...'

  File "/usr/lib/python3/dist-packages/wcs/wscalls.py", line 269, in call
   267             notify_on_errors=self.notify_on_errors,
   268             record_on_errors=self.record_on_errors,
>  269             **(self.request or {}),
   270         )[2]
   271         return json_loads(data)

  locals:
     self = <NamedWsCall 'Annuaire interne' id:annuaire_interne>

  File "/usr/lib/python3/dist-packages/wcs/wscalls.py", line 279, in __getattr__
   277             return NamedWsCall.get(attr).call()
   278         except (KeyError, ValueError):
>  279             raise AttributeError(attr)
   280
   281
#5

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

Frédéric Péters a écrit :

Il me semble que le problème devrait être caché (mais je me trompe peut-être).

Provoque une trace où/comment ?

Là j'ai enlevé l'affichage des traces, mais ça fait quand même une Internal Server Error, je pensais qu'on avait comme objectif de cacher ce genre de chose un maximum, l'utilisation d'une variable dans un template ne doit jamais cracher, au pire ne rien afficher là où la variable est utilisée.

#6

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

Bon en plus sur ce cas là je ne vois pas d'erreur enregistrée, ni sur le formulaire ni sur le workflow associé (là ce serait bizarre) :
#7

Mis à jour par Frédéric Péters il y a presque 3 ans

  • Assigné à mis à Frédéric Péters

Là j'ai enlevé l'affichage des traces, mais ça fait quand même une Internal Server Error, je pensais qu'on avait comme objectif de cacher ce genre de chose un maximum, l'utilisation d'une variable dans un template ne doit jamais cracher, au pire ne rien afficher là où la variable est utilisée.

Ok je pensais qu'il y avait "une trace" mais ça impliquait aussi erreur 500, etc.

#8

Mis à jour par Frédéric Péters il y a presque 3 ans

#9

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

  • Statut changé de Solution proposée à Solution validée
#10

Mis à jour par Frédéric Péters il y a presque 3 ans

  • Statut changé de Solution validée à Résolu (à déployer)

J'ai hésité à attendre le cycle prochain mais non, allons-y,

commit 2ca413d3d37f7ffab7617903c4eb1fdb8a6d9a7a
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Mon May 10 16:49:57 2021 +0200

    wscalls: handle connection errors (#53900)
#11

Mis à jour par Frédéric Péters il y a presque 3 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#12

Mis à jour par Frédéric Péters il y a 5 mois

  • Lié à Bug #43901: crash 500 lors d'une SSLError/ConnectionError sur un champ commentaire avec un webservice.xxx ajouté

Formats disponibles : Atom PDF