Bug #20979
GRECO: ne pas faire de logger.exception() sur une erreur suds
Statut:
Nouveau
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
04 janvier 2018
Echéance:
% réalisé:
0%
Temps estimé:
Patch proposed:
Non
Planning:
Description
On reçoit ce genre de mail en cas de panne SOAP :
Date: Thu, 04 Jan 2018 02:00:33 -0000 From: admin+gnm.recette.passerelle@entrouvert.com To: admin+gnm.recette@entrouvert.com Subject: [passerelle] ERROR (EXTERNAL IP): Error occurred while processing request Error occurred while processing request Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/passerelle/utils/jsonresponse.py", line 117, in api resp = f(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/passerelle/views.py", line 276, in perform return self.endpoint(request, **self.get_params(request, *args, **kwargs)) File "/usr/lib/python2.7/dist-packages/passerelle/contrib/greco/models.py", line 220, in status 'iddemande': iddemande, File "/usr/lib/python2.7/dist-packages/suds/client.py", line 542, in __call__ return client.invoke(args, kwargs) File "/usr/lib/python2.7/dist-packages/suds/client.py", line 602, in invoke result = self.send(soapenv) File "/usr/lib/python2.7/dist-packages/suds/client.py", line 647, in send result = self.succeeded(binding, reply.message) File "/usr/lib/python2.7/dist-packages/suds/client.py", line 684, in succeeded reply, result = binding.get_reply(self.method, reply) File "/usr/lib/python2.7/dist-packages/suds/bindings/binding.py", line 151, in get_reply self.detect_fault(soapbody) File "/usr/lib/python2.7/dist-packages/suds/bindings/binding.py", line 182, in detect_fault raise WebFault(p, fault) WebFault: Server raised fault: 'Currently , Address endpoint : [ Name : grandlyon--greco-rec_APIproductionEndpoint_0 ] [ State : SUSPENDED ]'
parce que l'exception suds WebFault passe par :
if (not isinstance(e, (Http404, PermissionDenied, ObjectDoesNotExist)) and getattr(e, 'log_error', True)): logger.exception("Error occurred while processing request", extra=extras)
dans passerelle/utils/jsonresponse.py
Bien que je sois peu à l'aise avec ce mécanisme, on pourrait peut-être monkeypatcher suds pour ajouter un WebFault.log_error = False ? Dans ce cas, l'exception sera quand même logguée comme un simple warning par passerelle, et c'est qui nous intéresse ici.
(à noter que ça a l'air totalement différent dans suds 0.7 dispo dans les backports...)