Problème d'impression suite migration en v4

Bonjour l’équipe,
J’ai migré un site v3 vers la v4-beta et j’ai un soucis en Production quand je lance l’impression.
En dév cela marche.
En production, ça plante : mais ça n’affiche aucun bug, aucune erreur. J’ai juste une espère de feuille blanche avec un son derrière qui signale sûrement l’erreur. Dans mon inspecteur JS j’ai cela :

GET
wss://xxxxx/socket.io/?EIO=4&transport=websocket&sid=G7bcprY3mt7qR_hoAAA-

Firefox ne peut établir de connexion avec le serveur à l’adresse wss://xxxxx/socket.io/?EIO=4&transport=websocket&sid=G7bcprY3mt7qR_hoAAA-. websocket.js:43:26
XHRPOST
https://xxxxx/api/method/frappe.www.printview.get_html_and_style
[HTTP/2 500 Internal Server Error 112ms]

La lecture automatique n’est autorisée que lorsqu’elle a été approuvée par l’utilisateur, que le site est activé par l’utilisateur, ou que le média est muet. utils.js:838:9
Unable to handle failed response request.js:362:12
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

Déjà ma première question serait de savoir où sont enregistrés les erreurs sur le chargement de l’impression.
Par contre lorsque je clique sur le bouton PDF, ça me sort bien le PDF sans erreur…
Merci :wink:
Ludovic

Bonjour Ludovic,

Je n’ai pas le problème en production de mon côté c’est curieux. Dans l’inspecteur de Firefox, onglet Réseau, tu peux voir la réponse du serveur en cliquant sur la ligne de requête en erreur.

Peut-être y a-t-il des messages d’erreurs liés dans dokos-bench/logs/web.error.log ?
Le message « SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data » est typique, ça veut dire que le serveur a renvoyé « Internal Server Error », ou, encore mieux, un traceback complet.

Corentin

Éventuellement, une erreur dans le template Jinja utilisé. As-tu testé sur un document simple comme ton propre User ?

Je n’ai aucun log qui apparaît dans dokos-bench/logs/web.error.log. Il y a un niveau de debug à activer quelque part ?
Avec d’autres modèles, cela marche bien.

J’ai peut être trouvé une piste qui apparaît sur la console si je lance un bench start manuellement en prod :

frappe-bench/apps/frappe/frappe/utils/html_utils.py:162: MarkupResemblesLocatorWarning: The input looks more like a filename than markup. You may want to open this file and pass the filehandle into Beautiful Soup.

if not bool(BeautifulSoup(html, "html.parser").find()):

J’ai regardé dans les logs de Nginx, j’ai cette erreur. Je continue à chercher, sans doute un problème de permissions tout bête…

2023/11/27 17:35:17 [crit] 2957428#2957428: *39380 open() "/var/lib/nginx/tmp/client_body/0000000088" failed (13: Permission denied), client: 127.0.0.1, server: app.ipcem.org, request: "POST /api/method/frappe.www.printview.get_html_and_style HTTP/1.1", host: "xxxx"

Bon j’ai trouvé : il s’agit d’un problème sur NGinx.

La taille du buffer POST envoyé était trop petite au regard des données à envoyer. Le rapport que je génère est un rapport qui contient beaucoup d’images.

Il suffit de régler le paramètre client_body_buffer_size dans la config NGinx en augmentant la valeur (par défaut 8K ou 16K), on redémarre le service et le tour est joué.

Merci Ludovic :joy: et merci Corentin pour tes remarques.

2 Likes