Projet

Général

Profil

Development #44318

api particulier: ne pas alerter sur les 404 sur une interrogation CAF quand le dossier est radié

Ajouté par Thomas Noël il y a presque 4 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
22 juin 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

API Particulier renvoie une 404 sur /api-particulier/api-particulier-caf/caf_famille dans ce cas suivant :

{u'reason': u'Dossier radi\xe9. Le document ne peut \xeatre \xe9dit\xe9.', u'message': u'Dossier radi\xe9. Le document ne peut \xeatre \xe9dit\xe9.', u'error': u'not_found'}

Cela nous lève une alerte (donc un mail), ça ne devrait pas.


Fichiers


Demandes liées

Lié à Passerelle - Bug #78942: api_particuliers: ajouter un message dans known_errors ? (APIError: API-particulier platform "prod" returned a non 200 status 404: {'error': 'not_found', 'reason': "...)Fermé23 juin 2023

Actions

Révisions associées

Révision 7e414b43 (diff)
Ajouté par Valentin Deniaud il y a plus de 3 ans

api_particulier: dont log 404 for normal caf errors (#44318)

Historique

#1

Mis à jour par Valentin Deniaud il y a presque 4 ans

  • Assigné à mis à Valentin Deniaud
#2

Mis à jour par Valentin Deniaud il y a presque 4 ans

#3

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

  • Statut changé de Solution proposée à En cours

Tests à adapter.

#5

Mis à jour par Thomas Noël il y a presque 4 ans

Vu aussi ce retour :

API-particulier platform "prod" returned a non 200 status 404: {'error': 'not_found', 'reason': 'Non droit. Le document ne peut être édité.', 'message': 'Non droit. Le
document ne peut être édité.'}

tu peux l'ajouter ?

#6

Mis à jour par Valentin Deniaud il y a presque 4 ans

Et sinon plutôt que d'exclure du logging les x messages d'erreur 404, tout exclure et ne logger que les vraies, ie le message 'no route ...' ?

#7

Mis à jour par Thomas Noël il y a presque 4 ans

Valentin Deniaud a écrit :

Et sinon plutôt que d'exclure du logging les x messages d'erreur 404, tout exclure et ne logger que les vraies, ie le message 'no route ...' ?

En creusant on trouve https://github.com/betagouv/api-caf/blob/master/lib/client/errors.json qui est la liste exhaustive des pannes pour lesquelles on ne doit rien logguer ("c'est du fonctionnel"). Je serais pour en faire une copie dans notre code, genre dans caf_errors.py, avec une fonction qui retourne une APIError quand elle reconnait un code+msg, sinon None, et utiliser ça dans le « # avoid logging ... ».

Au passage, ne pas chercher à inventer des messages en anglais qui ne serviront jamais à personne, juste envoyer le message en français.

#8

Mis à jour par Valentin Deniaud il y a plus de 3 ans

Donc ne plus logger les 500 du moment qu'on les connait ? Je n'ai pas d'avis alors soit.

#9

Mis à jour par Valentin Deniaud il y a plus de 3 ans

Le code est plus clair en ajoutant l'erreur 404 d'api particulier à la liste des erreurs.

#10

Mis à jour par Valentin Deniaud il y a plus de 3 ans

Et pour finir micmac dans l'auteur de mon commit et s/caf_errors/known_errors.

#11

Mis à jour par Valentin Deniaud il y a plus de 3 ans

Et comme me le fait remarquer Thomas à l'oral, le code qu'on renvoie ne peut plus être 'not-found'.

Je le laisse en cas de 404, pour ne pas casser l'existant, sinon j'ajoute un laconique 'api-error'.

#12

Mis à jour par Thomas Noël il y a plus de 3 ans

Valentin Deniaud a écrit :

Et comme me le fait remarquer Thomas à l'oral, le code qu'on renvoie ne peut plus être 'not-found'.

Je le laisse en cas de 404, pour ne pas casser l'existant, sinon j'ajoute un laconique 'api-error'.

Allez, je vais faire mon pénible-sur-les-détails.

KNOWN_ERRORS[response.status_code] va crasher sur des erreurs autres que 400/404/500, il faut faire un « KNOWN_ERRORS.get(response.status_code, []) » ou alors plus explicitement

if response.status_code in KNOWN_ERRORS and message in KNOWN_ERRORS[response.status_code]:

Aussi, on perd quand même la partie qui gérait la présence de « data.get('error') », je trouve que quand il existe on devrait l'utiliser, renvoyer dans ce cas APIError(data.get('message', 'unknown'), data={code: data.get('error').remplace('_', '-'), etc})

Aussi, sur les APIError, garder la même structure dans tous les cas, c'est-à-dire ajouter le « 'status_code': response.status_code » comme on le fait en cas d'erreur "inconnue". (il faut toujours essayer de garder la même structure de réponse car ainsi, en cas d'appels successifs, le dernier appel par w.c.s. va bien écraser complètement toutes les données du précédent appel au niveau des données stockées dans la demande appelante). Mais bon, une fois tout ça écrit je vois que tout est un peu déjà hétéroclite dans les APIError au dessus : laisse tomber cette remarque.

#15

Mis à jour par Thomas Noël il y a plus de 3 ans

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

Pousse quand c'est vert.

#16

Mis à jour par Valentin Deniaud il y a plus de 3 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 7e414b431361b2bd081bcc18f5fe44d2bea72572
Author: Valentin Deniaud <vdeniaud@entrouvert.com>
Date:   Tue Jul 28 12:03:05 2020 +0200

    api_particulier: dont log 404 for normal caf errors (#44318)
#17

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

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

Mis à jour par Lauréline Guérin il y a 10 mois

  • Lié à Bug #78942: api_particuliers: ajouter un message dans known_errors ? (APIError: API-particulier platform "prod" returned a non 200 status 404: {'error': 'not_found', 'reason': "...) ajouté

Formats disponibles : Atom PDF