Development #50615
La version 3.3 de quixote casse le middleware → faire en sorte de fonctionner également avec quixote 3.3
0%
Description
On a cette erreur quand on essaye d'ajouter un nouvel objet : ici une catégorie.
Internal Server Error: /backoffice/forms/categories/new Traceback (most recent call last): File "/home/nroche/envs/publik-env-py3/lib/python3.9/site-packages/django/core/handlers/exception.py", line 41, in inner response = get_response(request) File "/home/nroche/envs/publik-env-py3/lib/python3.9/site-packages/django/utils/deprecation.py", line 138, in __call__ response = self.process_request(request) File "/home/nroche/src/wcs/wcs/middleware.py", line 47, in process_request pub.parse_request(compat_request) File "/home/nroche/envs/publik-env-py3/lib/python3.9/site-packages/quixote/publish.py", line 90, in parse_request request.process_inputs() File "/home/nroche/src/wcs/wcs/qommon/http_request.py", line 141, in process_inputs quixote.http_request.HTTPRequest.process_inputs(self) File "/home/nroche/envs/publik-env-py3/lib/python3.9/site-packages/quixote/http_request.py", line 204, in process_inputs s = self.stdin.read(min(remaining, 10000)) AttributeError: 'NoneType' object has no attribute 'read'
Sur http://www.quixote.ca/ on voit qu'il y a une nouvelle version de quixote depuis le le 25/01/2021.
Si je modifie le setup pour installer la version précédente, le bug disparaît :
install_requires=[ ... 'quixote<3.3', ],
Fichiers
Révisions associées
Historique
Mis à jour par Nicolas Roche il y a environ 3 ans
Il n'y a pas de tag dans le dépôt git mais on retrouve bien ce commit qui me semble lié :
Author: Neil Schemenauer <nas@arctrix.com> Date: Thu Aug 20 16:41:20 2020 -0700 Make process_inputs() safe to call multiple times. If a request needs to be re-tried, we need to take special care to handle request.stdin. Change process_inputs() to buffer stdin unconditionally. If process_inputs() is called again, reset the position of stdin and reset the form dictionary.
Mis à jour par Thomas Noël il y a environ 3 ans
Pour l'instant on tourne avec quixote3 < 3.1 (qui vient de nos paquets deb.entrouvert.org, Debian ne propose pas de quixote py3) donc on pourrait se mettre cette contrainte là dans un premier temps.
Puis patcher wcs pour supporter quixote de 3.0 à 3.3, et alors packager quixote 3.3
Mis à jour par Nicolas Roche il y a environ 3 ans
- Fichier 0001-setup.py-limit-quixote-version-to-3.0-50615.patch 0001-setup.py-limit-quixote-version-to-3.0-50615.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
quixote3 < 3.1
(patch proposé)
Sinon, je pense qu'il s'agit d'une régression côté quixote : il y a cette partie qui a disparu dans le patch :
- elif ctype == 'multipart/form-data': - self._process_multipart(length, ctype_params) - read_body = False - if read_body: ... s = self.stdin.read(min(remaining, 10000))
or le bug se produit sur des contenus multiparts
:
(Pdb) ctype = self.environ.get("CONTENT_TYPE") (Pdb) ctype 'multipart/form-data'
Mis à jour par Thomas Noël il y a environ 3 ans
J'ai l'impression que le bogue est plutôt à corriger dans devinst
$ cat roles/wcs/files/requirements.txt Quixote >= 3 graphviz feedparser Pillow requests vobject uWSGI
... à comparer avec le tox.ini de wcs qui a déjà ce qu'il faut : Quixote>=3.0,<3.2
Mis à jour par Nicolas Roche il y a environ 3 ans
- Fichier 0001-wcs-limit-quixote-version-50615.patch 0001-wcs-limit-quixote-version-50615.patch ajouté
- Projet changé de w.c.s. à Publik Installation Développeur
- Assigné à mis à Nicolas Roche
à corriger dans devinst, Quixote>=3.0,<3.2
(voilà)
Mis à jour par Emmanuel Cazenave il y a environ 3 ans
Pardon pour le ping pong, mais ça m'irait que ce soit plutôt dans wcs/setup.py, dans l'id
Mis à jour par Emmanuel Cazenave il y a environ 3 ans
(suite)
dans l'idée que le requirements.txt de devinst est là pour compenser l'incomplétude du setup.py, et que je voudrais plutôt m'en débarrasser.
Mis à jour par Nicolas Roche il y a environ 3 ans
- Fichier 0001-setup.py-limit-quixote-version-to-3.2-50615.patch 0001-setup.py-limit-quixote-version-to-3.2-50615.patch ajouté
- Projet changé de Publik Installation Développeur à w.c.s.
<3.2
dans tox c'est pour que ça fonctionne aussi en python 3.5. (https://git.entrouvert.org/wcs.git/commit/?id=4ca1fe7834a954cb451961a669e15aae99124218)
En local je dirais qu'il faut tourner avec la dernière version qui fonctionne : la 3.2
Mis à jour par Frédéric Péters il y a environ 3 ans
- Statut changé de Solution proposée à En cours
- Priorité changé de Normal à Bas
- Patch proposed changé de Oui à Non
Je ne vois pas d'urgence ici, je suis pour que ça soit correctement corrigé dès ce ticket pour que ça fonctionne avec la version 3.3, plutôt qu'avoir un jour plus tard à faire ça.
Mis à jour par Frédéric Péters il y a environ 3 ans
- Sujet changé de La version 3.3 de quixote casse le middleware à La version 3.3 de quixote casse le middleware → faire en sorte de fonctionner également avec quixote 3.3
Mis à jour par Nicolas Roche il y a environ 3 ans
- Assigné à
Nicolas Rochesupprimé
Je m'extirpe discrètement de ce ticket : à mon avis c'est quixote qu'il faut patcher et là, je sais pas faire.
Mis à jour par Frédéric Péters il y a environ 3 ans
- Fichier 0001-misc-process-request-input-without-calling-to-quixot.patch 0001-misc-process-request-input-without-calling-to-quixot.patch ajouté
- Statut changé de En cours à Solution proposée
- Patch proposed changé de Non à Oui
Dans la branche wip/50615-process-inputs il y a un second commit pour fair le build avec Quixote 3.3 (mais je préfère garder la limite pour correspondre à ce qui tourne en prod).
- build avec 3.0, https://jenkins.entrouvert.org/job/wcs-wip/job/wip%252F50615-process-inputs/2/
- build avec 3.3, https://jenkins.entrouvert.org/job/wcs-wip/job/wip%252F50615-process-inputs/3/
Sur le patch en lui-même, il court-circuite le process_inputs de quixote en incorporant les appels nécessaires pour la gestion query string et POST.
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Frédéric Péters il y a environ 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 79dd178c9d0088fb0b6a308ffbf9d09265b1d410 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Wed Jan 27 19:11:36 2021 +0100 misc: process request input without calling to quixote process_inputs (#50615)
Mis à jour par Frédéric Péters il y a environ 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: process request input without calling to quixote process_inputs (#50615)