Projet

Général

Profil

Development #65491

écran "informations techniques", noter quelle erreur est survenue

Ajouté par Frédéric Péters il y a presque 2 ans. Mis à jour il y a presque 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
20 mai 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Ça dit

Une erreur est survenue lors de la tentative de connexion au serveur LDAP, pour cette raison la commande ldapsearch n’est pas affichée.

mais ça serait utile de compléter ça de l'info même technique sur quelle était l'erreur.

(présentement je suis sur un écran qui affiche cette phrase pour les deux annuaires configurés et pour l'un j'ai vu "socket timeout error" via journalctl mais pour l'autre aucune idée).


Fichiers

0002-ldap-display-server-error-on-technical-info-backoffi.patch (4,29 ko) 0002-ldap-display-server-error-on-technical-info-backoffi.patch Paul Marillonnet, 17 juin 2022 12:09
0001-ldap-return-server-error-info-on-failed-connection-a.patch (9,3 ko) 0001-ldap-return-server-error-info-on-failed-connection-a.patch Paul Marillonnet, 17 juin 2022 12:09
0001-ldap-provide-a-raises-keyword-argument-flag-on-conne.patch (4,91 ko) 0001-ldap-provide-a-raises-keyword-argument-flag-on-conne.patch Paul Marillonnet, 27 juin 2022 15:55
0002-ldap-display-server-error-on-technical-info-backoffi.patch (3,63 ko) 0002-ldap-display-server-error-on-technical-info-backoffi.patch Paul Marillonnet, 27 juin 2022 15:55
0002-ldap-display-server-error-on-technical-info-backoffi.patch (3,63 ko) 0002-ldap-display-server-error-on-technical-info-backoffi.patch Paul Marillonnet, 27 juin 2022 17:13
0001-ldap-provide-a-raises-keyword-argument-flag-on-conne.patch (4,84 ko) 0001-ldap-provide-a-raises-keyword-argument-flag-on-conne.patch Paul Marillonnet, 27 juin 2022 17:13
0001-ldap-provide-a-raises-keyword-argument-flag-on-conne.patch (4,32 ko) 0001-ldap-provide-a-raises-keyword-argument-flag-on-conne.patch Paul Marillonnet, 29 juin 2022 17:25
0002-ldap-display-server-error-on-technical-info-backoffi.patch (3,68 ko) 0002-ldap-display-server-error-on-technical-info-backoffi.patch Paul Marillonnet, 29 juin 2022 17:25
0001-ldap-provide-a-raises-keyword-argument-flag-on-conne.patch (4,33 ko) 0001-ldap-provide-a-raises-keyword-argument-flag-on-conne.patch Paul Marillonnet, 30 juin 2022 09:27
0002-ldap-display-server-error-on-technical-info-backoffi.patch (3,68 ko) 0002-ldap-display-server-error-on-technical-info-backoffi.patch Paul Marillonnet, 30 juin 2022 09:27

Révisions associées

Révision 3448753e (diff)
Ajouté par Paul Marillonnet il y a presque 2 ans

ldap: provide a 'raises' keyword-argument flag on connection retrieval (#65491)

Révision 4e7a6873 (diff)
Ajouté par Paul Marillonnet il y a presque 2 ans

ldap: display server error on technical info backoffice page (#65491)

Révision fbf91138 (diff)
Ajouté par Paul Marillonnet il y a presque 2 ans

translation update (#65491)

Historique

#1

Mis à jour par Paul Marillonnet il y a presque 2 ans

  • Assigné à mis à Paul Marillonnet
#2

Mis à jour par Paul Marillonnet il y a presque 2 ans

Frédéric Péters (absent jusqu’au 13/6) a écrit :

(présentement je suis sur un écran qui affiche cette phrase pour les deux annuaires configurés et pour l'un j'ai vu "socket timeout error" via journalctl mais pour l'autre aucune idée).

Je me demande si c’est toujours pas cette même lacune du backend ldap qui lâche l’affaire lorsqu’un des annuaires est en erreur, même s’il y en a d’autres ensuite.
Je regarde.

#3

Mis à jour par Paul Marillonnet il y a presque 2 ans

Paul Marillonnet a écrit :

Frédéric Péters (absent jusqu’au 13/6) a écrit :

(présentement je suis sur un écran qui affiche cette phrase pour les deux annuaires configurés et pour l'un j'ai vu "socket timeout error" via journalctl mais pour l'autre aucune idée).

Je me demande si c’est toujours pas cette même lacune du backend ldap qui lâche l’affaire lorsqu’un des annuaires est en erreur, même s’il y en a d’autres ensuite.
Je regarde.

Et pas du tout, mauvaise langue je suis, c’est dû à un bogue dans mon code d’affichage de cette page.

C’est corrigé ici, avec :
· 0001 modification de l’interface pour retrouver l’éventuel message d’erreur lors de la tentative de connexion au(x) serveur(s) ;
· 0002 la remontée du message d’erreur dans le gabarit pour affichage sur la page d’information technique.

#4

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

Il y a un endroit où on utilise à la fois l'objet connexion et l'erreur ? Sinon ça me paraît plus simple de retourner soit l'un soit l'autre, genre par le biais d'une exception qui contiendrait le message d'erreur à remonter. Ça donnerait def get_connection(..., raise=False) pour que le comportement par défaut reste de ne pas lever d'exception et dans le manager on passerait raise=True et on rattraperait l'exception.

#5

Mis à jour par Paul Marillonnet il y a presque 2 ans

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

Oui tu as raison, à ma connaissance il n’y a pas d’usage simultané possible des deux, et donc c’est mieux de lever une exception.

#7

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

Cool mais là par rapport au premier jet tu ajoutes (?) une tentative d’agréger les erreurs de toutes les connexions et j'aimerais bien ne pas avoir ça, garder le code simple, attendre que quelqu'un le demande pour juger de l'utilité.

#8

Mis à jour par Paul Marillonnet il y a presque 2 ans

Valentin Deniaud a écrit :

Cool mais là par rapport au premier jet tu ajoutes (?) une tentative d’agréger les erreurs de toutes les connexions et j'aimerais bien ne pas avoir ça, garder le code simple, attendre que quelqu'un le demande pour juger de l'utilité.

Bien vu, tentative qui plus est infructueuse, ça va complètement planter (TypeError: sequence item 0: expected str instance, LDAPError found). Je revois ma copie.

#9

Mis à jour par Paul Marillonnet il y a presque 2 ans

Pour tout te dire, je réalise entre l’écriture des deux versions du patche qu’un bloc de configuration LDAP peut prendre plusieurs urls, d’où la tentative (foireuse) d’agréger les possibles erreurs qui peuvent survenir pour chaque URL. Dans les faits, je ne sais pas du tout quel est l’usage réel des multiples urls pour un bloc de config, et à ma connaissance on a ça nulle part dans nos raccordements. Comme tu dis, faisons simple, nouvelle version où je prends la dernière erreur remontée de l’itérateur.

#10

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

Paul Marillonnet a écrit :

nouvelle version où je prends la dernière erreur remontée de l’itérateur.

Et il me semble qu'on peut enchaîner sur une nouvelle simplification, faire en sorte que l'itérateur ne lève l'exception qu'une fois toutes les url tentées et aucun objet connexion obtenu (genre mettre le if raises après la boucle for). Ça permet de ne pas avoir à modifier get_connection au delà de l'ajout du paramètre.

#11

Mis à jour par Paul Marillonnet il y a presque 2 ans

Valentin Deniaud a écrit :

Et il me semble qu'on peut enchaîner sur une nouvelle simplification, faire en sorte que l'itérateur ne lève l'exception qu'une fois toutes les url tentées et aucun objet connexion obtenu (genre mettre le if raises après la boucle for). Ça permet de ne pas avoir à modifier get_connection au delà de l'ajout du paramètre.

Bien vu, ça simplement sensiblement 0001 en effet, merci.

Aussi 0002 un peu retouché, notamment parce que [1] j’avais une erreur d’affichage dû au contexte manquant dans le bloc de traduction ({% blocktrans with … %}), avec la correction du test qui va avec, et [2] toujours dans ce test je mocke la méthode get_connections plutôt que celle qui l’appelle, get_connection.

#12

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

Nickel, un dernier petit truc, pour l'usage qu'on en fait ça ne peut pas se produire mais ça ne coûte rien : actuellement il me semble que taper un list(cls.get_connections(block, raises=True)) alors qu'il n'y a pas d'erreur va crasher (genre errmsg n'est pas défini). Mettre plutôt if raises and errmsg ?

#13

Mis à jour par Paul Marillonnet il y a presque 2 ans

Valentin Deniaud a écrit :

Nickel, un dernier petit truc, pour l'usage qu'on en fait ça ne peut pas se produire mais ça ne coûte rien : actuellement il me semble que taper un list(cls.get_connections(block, raises=True)) alors qu'il n'y a pas d'erreur va crasher (genre errmsg n'est pas défini). Mettre plutôt if raises and errmsg ?

Oui complètement, un oubli de ma part, merci. Ce ne serait pas pas une NameError (errmsg est déclarée en dehors de la boucle for dans cette méthode get_connections), mais une LDAPError(None) alors que potentiellement l’itération s’est déroulée sans encombre. C’est encore pire :)

#14

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

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

Mis à jour par Paul Marillonnet il y a presque 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit fbf911389de663abbf6bd82919dca70f526fe5b2
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Jun 30 10:43:11 2022 +0200

    translation update (#65491)

commit 4e7a68736476d3e9edd2e117bd5b14e1509e56d2
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Mon Jun 27 15:52:22 2022 +0200

    ldap: display server error on technical info backoffice page (#65491)

commit 3448753eb5aba5e6858acc4febb81b1099efe295
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Mon Jun 27 15:26:58 2022 +0200

    ldap: provide a 'raises' keyword-argument flag on connection retrieval (#65491)
#16

Mis à jour par Transition automatique il y a presque 2 ans

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

Mis à jour par Transition automatique il y a plus d'un an

Automatic expiration

Formats disponibles : Atom PDF