3liz / lizmap-cadastre-module

Module Cadastre for Lizmap Web Client
Mozilla Public License 2.0
4 stars 5 forks source link

Plantage de l'instance PHP à cause d'une recherche par propriétaire #85

Closed Mavialle closed 1 year ago

Mavialle commented 1 year ago

What is the bug? Quand je fais une recherche par propriétaire avec l'outil cadastre sur Lizmap, la requête n'aboutit pas si un filtre a été appliqué sur les données parcelles, sections et communes via le plugin Lizmap ET si l'utilisateur appartient à certains groupes d'utilisateurs.

Etapes suivies :

  1. J'ai intégré les données cadastrales du Tarn (EDIGEO et MAJIC) à l'aide du plugin cadastre de QGIS Desktop dans PostgreSQL
  2. J'ai rajouté une colonne "groupe_lizmap" aux couches parcelle_info, geo_commune et geo_section et je les ai remplies avec un nom de groupe pour chaque ligne afin de pouvoir filtrer l'affichage des données en fonction de l'utilisateur (= des communes). Une commune = un nom de groupe toujours écrit de la même façon : epci_nomcommune_cadastre (ex : ccsvp_st_salvy_cadastre)
  3. J'ai monté un projet QGIS qui appelle seulement les données de parcelles, sections, communes et bâti. Dans les propriétés du projet, onglet QGIS Server, j'ai coché Parcelles, Sections et Communes dans Capacités WFS, puis j'ai filtré les 3 couches à l'aide du plugin Lizmap de QGIS en fonction de la colonne groupe_lizmap préalablement remplie
  4. j'ai déposé le projet QGIS et le fichier cfg par FTP sur le serveur Lizmap
  5. J'ai associé un utilisateur TEST à deux groupes : ccsvp_st_salvy_cadastre et ccct_terre_de_bancalie_cadastre. Ils ont exactement les même droits sur Lizmap.
  6. Je me suis connecté à l'interface préalablement créée, avec l'utilisateur TEST, j'ai ouvert l'outil cadastre, je suis allé sur l'onglet "Rechercher par propriétaire", j'ai sélectionné la commune de Saint-Salvy-de-la-Balme et j'ai recherché le propriétaire "3f " (pour 3f Occitanie) --> pas de problème, 4 parcelles trouvées
  7. Je me suis connecté en admin et j'ai sorti l'utilisateur TEST du groupe ccct_terre_de_bancalie_cadastre
  8. J'ai refait les étapes 6 et 7 : ça plante, aucun résultat ne sort et Lizmap n'est plus disponible pendant quelques minutes (même si on essaye d'accéder à la page d'accueil de Lizmap) avant que ça revienne. Si on ouvre un autre navigateur par contre, Lizmap fonctionne normalement, ce qui laisse à penser que l'instance PHP est plantée par la requête.

Comme je sais que le bug va être difficile à reproduire (les données MAJIC ne sont pas accessibles à tous), j'ai mis le contenu des fichiers /var/log/nginx/access.log et /var/log/nginx/error.log concerné par mes commandes en pièce jointe. J'ai juste remplacé l'IP de mon PC par MONIP. J'ai aussi copier/coller les logs de Lizmap dans le fichier logs_lizmap.txt. Il n'y a pas d'erreur dans le fichier /var/log/php7.4-fpm.log,

logs_lizmap.txt access.log error.log

Je ne sais pas si d'autres fichiers seraient intéressant à regarder ?

Versions logicielles utilisées

Gustry commented 1 year ago

Merci pour ce rapport assez détaillé ! Cependant, il n'y a pas de pièce jointe. Vous pouvez glisser/déposer sur la fenêtre.

Mavialle commented 1 year ago

Pardon, je les ai rajoutées dans mon premier post !

Gustry commented 1 year ago

Concernant les logs, il n'y a pas grand chose d'intéressant malheureusement

Mavialle commented 1 year ago

Y aurait-il un autre fichier que je pourrais consulter ? J'ai tenté de regarder un peu partout mais en vain, je n'arrive pas à trouver où exactement la requête envoyée est mal lue et fait tout buguer.

En fait, c'est la surcouche "filtre par utilisateur" paramétrée via le plugin Lizmap de QGIS Desktop qui est à la source du bug. Car l'interface n'a aucun soucis quand le filtre n'est pas utilisé. Avez-vous une idée de où l'association outil cadastre / filtre utilisateur pourrait dysfonctionner ?

Mavialle commented 1 year ago

Bonjour,

J'ai finalement réussi à résoudre mon problème en intégrant un jeu de données plus petit à PostgreSQL (juste les données de la communauté de communes, pas de tout le Tarn). La requête fonctionne alors dans tous les cas.

Je n'ai toujours pas compris par contre quel a été le problème dans le bug. Le filtre des données par utilisateur est-il limité en termes de nombre d'entités pouvant être traitées ? A moins que cela dépende de la puissance du serveur utilisé ? Je passe en tout cas le ticket en résolu.

Merci pour votre aide @Gustry !