Development #44318
api particulier: ne pas alerter sur les 404 sur une interrogation CAF quand le dossier est radié
0%
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
Révisions associées
Historique
Mis à jour par Valentin Deniaud il y a presque 4 ans
- Fichier 0001-api_particulier-dont-log-404-for-deregistrated-recor.patch 0001-api_particulier-dont-log-404-for-deregistrated-recor.patch ajouté
- Tracker changé de Bug à Development
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Benjamin Dauvergne il y a presque 4 ans
- Statut changé de Solution proposée à En cours
Tests à adapter.
Mis à jour par Valentin Deniaud il y a presque 4 ans
- Fichier 0001-api_particulier-dont-log-404-for-deregistrated-recor.patch 0001-api_particulier-dont-log-404-for-deregistrated-recor.patch ajouté
- Statut changé de En cours à Solution proposée
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 ?
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 ...' ?
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.
Mis à jour par Valentin Deniaud il y a plus de 3 ans
- Fichier 0001-api_particulier-dont-log-404-for-normal-caf-errors-4.patch 0001-api_particulier-dont-log-404-for-normal-caf-errors-4.patch ajouté
Donc ne plus logger les 500 du moment qu'on les connait ? Je n'ai pas d'avis alors soit.
Mis à jour par Valentin Deniaud il y a plus de 3 ans
- Fichier 0001-api_particulier-dont-log-404-for-normal-caf-errors-4.patch 0001-api_particulier-dont-log-404-for-normal-caf-errors-4.patch ajouté
Le code est plus clair en ajoutant l'erreur 404 d'api particulier à la liste des erreurs.
Mis à jour par Valentin Deniaud il y a plus de 3 ans
- Fichier 0001-api_particulier-dont-log-404-for-normal-caf-errors-4.patch 0001-api_particulier-dont-log-404-for-normal-caf-errors-4.patch ajouté
Et pour finir micmac dans l'auteur de mon commit et s/caf_errors/known_errors.
Mis à jour par Valentin Deniaud il y a plus de 3 ans
- Fichier 0001-api_particulier-dont-log-404-for-normal-caf-errors-4.patch 0001-api_particulier-dont-log-404-for-normal-caf-errors-4.patch ajouté
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'.
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.
Mis à jour par Valentin Deniaud il y a plus de 3 ans
Mis à jour par Valentin Deniaud il y a plus de 3 ans
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.
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)
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
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é
api_particulier: dont log 404 for normal caf errors (#44318)