Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Erreur 500 / Erreur : Sorry this is not working properly #718

Open
AudreyRemy opened this issue Jun 27, 2022 · 24 comments
Open

Erreur 500 / Erreur : Sorry this is not working properly #718

AudreyRemy opened this issue Jun 27, 2022 · 24 comments
Labels
bug Something isn't working

Comments

@AudreyRemy
Copy link

Bonjour,
Nous avons des erreurs sur notre site nature64.fr sur certaines fiches rando.

  • Soit avec un message d’erreur "Sorry, tihis is not working properly" :

https://nature64.fr/trek/11538-GR-10-De-Hendaye-a-Olhette-etape-n1?parentId=4614

https://nature64.fr/trek/11553-GR-10-Du-Col-des-Veaux-a-Bidarray-etape-n5?parentId=4614

  • Soit avec une erreur 500 Internal Server Error :

https://nature64.fr/trek/11443-GR-78-de-Lestelle-Betharram-a-Bruges-etape-n1?parentId=109

https://nature64.fr/trek/11447-GR-78-De-Bruges-a-Buzy-etape-n2?parentId=109

Je ne comprends pas d’où viennent ces erreurs. Je suis allée vérifier, la géométrie semble bien valide.
Je n'ai pas relevé toutes les fiches avec erreurs mais il se peut qu'il y en ait d'autres.

Merci d'avance pour vos retours.
Bonne journée.

@camillemonchicourt
Copy link
Member

C'est nouveau ? Suite à une mise à jour de Geotrek-rando-v3 ? En quelle version ?
A voir si ce n'est pas le même soucis que #717.
J'investigue.

@camillemonchicourt
Copy link
Member

camillemonchicourt commented Jun 27, 2022

Il faudrait des logs de Geotrek-rando-v3 pour pouvoir identifier le soucis et t'aider (avec docker-compose up au moment où les pages en erreur sont ouvertes dans un navigateur web, voir https://github.com/GeotrekCE/Geotrek-rando-v3/blob/main/docs/installation.md#install-geotrek-rando).

Et savoir en quelle version de Geotrek-rando-v3 vous êtes.
Pour voir si le même soucis que l'autre ticket mentionné avec l'ajout dans la 3.9.0 des signalétiques, aménagements publiées et services.

En tout cas pour la dernière indiquée, elle a :

Je ne vois pas de soucis similaire à l'autre ticket mentionné à priori. Les types de signalétique et d'aménagements utilisés sont bien renvoyées par les routes des types (https://geotrek-admin.le64.fr/api/v2/infrastructure_type/ et https://geotrek-admin.le64.fr/api/v2/signage_type/)

@AudreyRemy
Copy link
Author

Bonjour @camillemonchicourt,

Désolée pour le temps de réponse, je n'ai pas accès au serveur donc j'avais besoin de mes collègues.

Nous venons de faire la commande et voilà le résultat :

adm100522@PZL301-DOCKER:/var/docker-cd64/geotrek-rando$ sudo docker-compose up
geotrek-rando is up-to-date
Attaching to geotrek-rando
geotrek-rando | yarn run v1.22.18
geotrek-rando | $ NODE_ENV=production node ./src/server.js
geotrek-rando | > Ready on http://localhost:3000
geotrek-rando | TypeError: Cannot read properties of undefined (reading 'pictogramUri')
geotrek-rando | at DetailsInformationDesk (/app/src/.next/server/chunks/4074.js:3955:52)
geotrek-rando | at d (/app/node_modules/react-dom/cjs/react-dom-server.node.production.min.js:33:498)
geotrek-rando | at bb (/app/node_modules/react-dom/cjs/react-dom-server.node.production.min.js:36:16)
geotrek-rando | at a.b.render (/app/node_modules/react-dom/cjs/react-dom-server.node.production.min.js:42:43)
geotrek-rando | at a.b.read (/app/node_modules/react-dom/cjs/react-dom-server.node.production.min.js:41:83)
geotrek-rando | at Object.exports.renderToString (/app/node_modules/react-dom/cjs/react-dom-server.node.production.min.js:52:138)
geotrek-rando | at renderPage (/app/node_modules/next/dist/server/render.js:673:46)
geotrek-rando | at Object.ctx.renderPage (/app/src/.next/server/pages/_document.js:59:34)
geotrek-rando | at Object.defaultGetInitialProps (/app/node_modules/next/dist/server/render.js:315:51)
geotrek-rando | at Function.getInitialProps (/app/src/.next/server/chunks/3590.js:515:20)

Version Geotrek rando 3.8

Merci.

@camillemonchicourt
Copy link
Member

OK encore un "TypeError: Cannot read properties of undefined (reading 'pictogramUri')"...

Encore une fois la rando doit être associée à un objet non renvoyé par l'API donc il n'arrive pas à en récupérer le picto, donc la page crashe.

Il faudrait qu'on voit pour ignorer ce genre de cas plutôt que de crasher la page.

Mais en attendant il faudrait quel objet pose soucis dans tes données et ton API.
Cette erreur remonte en ouvrant quelle fiche rando ?

@AudreyRemy
Copy link
Author

Alors je pense que c'était cette page https://nature64.fr/trek/11538-GR-10-De-Hendaye-a-Olhette-etape-n1?parentId=4614
mais le problème maintenant c'est qu'on a une erreur 502 bad gateway dès la page d'accueille www.nature64.fr

@camillemonchicourt
Copy link
Member

Là c'est autre chose...
A voir ce que vous avez fait qui a entraîné cela... ?

@AudreyRemy
Copy link
Author

AudreyRemy commented Jun 28, 2022

docker-compose up
docker-compose logs -t

Faut-il faire sudo docker-compose up -d --force-recreate ?

@camillemonchicourt
Copy link
Member

Ah bah c'est normal alors.
Quand on fait "docker-compose up" (sans l'option -d) dès qu'on sort du terminal, le container docker est arrêté !
C'est expliqué dans la doc et im ne faut pas le faire en production en effet.

@AudreyRemy
Copy link
Author

Merci Camille le container est relancé.
Donc la page est https://nature64.fr/trek/11538-GR-10-De-Hendaye-a-Olhette-etape-n1?parentId=4614

@camillemonchicourt
Copy link
Member

OK je vois le soucis grâce aux logs.
Cette rando est associé au lieu d'information ayant l'ID 12 : https://geotrek-admin.le64.fr/api/v2/trek/11538/
Mais on voit que l'API ne renvoit pas de lieu d'information avec l'ID 12 : https://geotrek-admin.le64.fr/api/v2/informationdesk/

A voir si ce lieu d'information existe bien dans votre BDD ?
Et si oui, pourquoi l'API de Geotrek-admin ne le renvoie pas ?

C'est le même soucis pour la rando 11553 (https://geotrek-admin.le64.fr/api/v2/trek/11553/) qui est associée au lieu d'information 6, alors que l'API ne renvoie pas de lieu d'information avec l'ID 6 : https://geotrek-admin.le64.fr/api/v2/informationdesk/

Et toujours pareil pour la rando 11447 (https://geotrek-admin.le64.fr/api/v2/trek/11447/) qui est associée au lieu d'information 10, alors que celui-ci n'est pas non plus renvoyée https://geotrek-admin.le64.fr/api/v2/informationdesk/

Peux-tu vérifier si il y a un soucis dans tes données ou ta BDD Geotrek-admin, ou si il y a un soucis sur l'API ?

@babastienne
Copy link
Member

A priori les lieux d'informations existent bien, le problème est plus compliqué que ça.

L'API va chercher les lieux d'information liés à des objets publiés. Or, le lieux d'information n'est associé à aucun itinéraire publié puisque l'étape N°1 du GR10 n'est pas publiée. Or, comme l'itinérance permet d'afficher les enfants même lorsque ceux-ci ne sont pas publiés ca peut poser un problème (c'est ce cas précis qui se produit pour le 64).

Il faudrait corriger l'API pour qu'elle affiche les lieux d'information liés à des objets publiés ou à des objets enfants non publiés dont le parent est publié.

Mais il faudrait surtout modifier Rando V3 pour que l'appli ne crash pas dès qu'il manque une information.

@camillemonchicourt
Copy link
Member

OK je capte, merci pour l'investigation et les précisions.
Solution facile : Associer ces lieux d'information aussi à la fiche itinérance mère (publiée) et pas seulement aux étapes de l'itinérance (non publiées).

Et en effet, côté Geotrek-rando-v3, on a évoqué plus largement le fait que quand un objet n'est pas renvoyé par l'API Geotrek-rando devrait l'ignorer et non pas crasher.

@AudreyRemy
Copy link
Author

Bonjour
Merci @babastienne et @camillemonchicourt
Comment dois-je procéder pour associer ces lieux d'informations ? Je pense que les éléments viennent de Tourinsoft via le parser.

@camillemonchicourt
Copy link
Member

camillemonchicourt commented Jul 7, 2022

Salut. Ah OK ils seraient associés automatiquement aux étapes mais pas à l'itinérance (itinéraire parent) ?
Il te suffit de modifier l'itinéraire parent et d'y associer les lieux de renseignement souhaités.

A voir si cette info n'est pas écrasée par le prochain import des itinéraires depuis Tourisnsoft ?

@AudreyRemy
Copy link
Author

L'itinéraire parent est créé dans Geotrek. Seules les étapes arrivent de Tourinsoft donc ça devrait être bon. Je vais tester. Merci @camillemonchicourt

@AudreyRemy
Copy link
Author

Lorsque j'ajoute le lieux de renseignements de l'étape 1 (étape qui contenait l'erreur) à l'itinéraire parent, j'obtiens l'erreur sur l’itinéraire parent également. Toutes les étapes ne sont pas concernées par cette erreur alors qu'elles ont des lieux de renseignement qui ne sont pas associés à l’itinéraire parent

@camillemonchicourt
Copy link
Member

Oui, car les lieux de renseignement sont gardés en cache par Geotrek-rando-v3 pour pas qu'il les redemande à l'API de Geotrek-admin à chaque fois.
Pour remettre le cache serveur de Geotrek-rando-v3 et ainsi interroger à nouveau l'API, il faut restart le docker de Geotrek-rando-v3 (docker-compose restart).
Après ça, ça devrait être bon.

@AudreyRemy
Copy link
Author

Merci.
Mes collègues sont absents donc je vous tiens informés dès que je trouve une autre personne qui pourrait restart Geotrek Rando.
Par contre je ne comprends pas pourquoi toutes les étapes ne sont pas concernées par cette erreur alors qu'elles ont des lieux de renseignement également

@camillemonchicourt
Copy link
Member

Car elles doivent être associés à des lieux de renseignement qui sont associés par ailleurs à au moins un itinéraire publié.
L'API renvoie les lieux de renseignement qui sont associés à au moins un itinéraire publié.
Le soucis se pose sur les lieux de renseignement qui sont uniquement associés à des itinéraires non publiés (étapes).

@AudreyRemy
Copy link
Author

Ok merci @camillemonchicourt pour tes retours

@AudreyRemy
Copy link
Author

C'est bon ça a l'air de fonctionner. Merci @babastienne et @camillemonchicourt
Je n'ai pas fermé le ticket car il y a toujours l'idée de ne pas faire crasher l'appli mais si cela est déjà mentionné par ailleurs je te laisse clôturer Camille.

@noelmartinon
Copy link

Bonjour,
Même erreur 500 constatée en upgrade de 3.8.5 vers latest (3.10.2). J'ai remis la 3.8.5 et constaté que le problème survient dès le passage en 3.9.0.
Rien dans les logs nginx ni dans ceux du docker.
Je suis preneur de toute idée.

@camillemonchicourt
Copy link
Member

Salut. La page te renvoie la même erreur (Sorry this is not working properly), indiquant que la page n'arrive pas à se construire, mais l'origine du soucis est certainement différent.
Dans le cas du CD64, le soucis était particulier à leur contexte, où certains lieux de renseignement étaient associés uniquement à des itinéraires non publiés. Donc ces lieux de renseignement n'étaient pas renvoyés par l'API et donc les pages des randos associées à ces lieux de renseignement non renvoyés par l'API plantaient.

Globalement, on aimerait faire en sorte que si des infos associées à un objet ne sont pas renvoyés dans l'API, cela ne fasse pas planter la page de l'objet. C'est une évolution à prévoir, financer, réaliser.

Dans ton cas @noelmartinon, il faudrait voir la page de quel objet plante, voir quel est le message d'erreur affiché dans la console du navigateur, et analyser au niveau du contenu de cet objet, si une info est manquante dans l'API.

Dans la 3.9.0, on a ajouté l'affichage de certains champs sur les randos, mais je ne vois pas en quoi cela pourrait faire planter des pages.
On a aussi ajouté l'affichage des aménagements et signalétiques publiés sur les cartes des randos et sites Outdoor, mais là non plus je ne vois pas pourquoi cela pourrait faire planter des pages.
Si tu peux repasser en 3.10 et indiquer des pages précises dont le chargement plante ?
Tu peux m'envoyer ça par email si ton Geotrek-rando-v3 n'est pas encore sur une URL publiable.

@camillemonchicourt
Copy link
Member

Le soucis remonté par @noelmartinon est le même que #717 (comment)

Il a des randos qui ont des services à proximité. L'API de Geotrek-admin renvoie bien ces services, mais pas les types de services associés.
Donc cela fait planter l'affichage des pages de ces randos qui ont des services à proximité.

A creuser au niveau de Geotrek-admin et de son API, même si côté Geotrek-rando-v3, quand l'API ne renvoie pas un objet, cela ne devrait pas faire planter la page, mais ignorer l'objet absent de l'API.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants