Projet

Général

Profil

Development #50615

La version 3.3 de quixote casse le middleware → faire en sorte de fonctionner également avec quixote 3.3

Ajouté par Nicolas Roche il y a environ 3 ans. Mis à jour il y a environ 3 ans.

Statut:
Fermé
Priorité:
Bas
Assigné à:
Version cible:
-
Début:
27 janvier 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Révision 79dd178c (diff)
Ajouté par Frédéric Péters il y a environ 3 ans

misc: process request input without calling to quixote process_inputs (#50615)

Historique

#1

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.

#2

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

#3

Mis à jour par Nicolas Roche il y a environ 3 ans

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'

#4

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

#5

Mis à jour par Nicolas Roche il y a environ 3 ans

à corriger dans devinst, Quixote>=3.0,<3.2

(voilà)

#6

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

#7

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.

#8

Mis à jour par Nicolas Roche il y a environ 3 ans

<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

#9

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.

#10

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
#11

Mis à jour par Nicolas Roche il y a environ 3 ans

  • Assigné à Nicolas Roche supprimé

Je m'extirpe discrètement de ce ticket : à mon avis c'est quixote qu'il faut patcher et là, je sais pas faire.

#12

Mis à jour par Frédéric Péters il y a environ 3 ans

  • Assigné à mis à Frédéric Péters
#13

Mis à jour par Frédéric Péters il y a environ 3 ans

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).

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.

#14

Mis à jour par Benjamin Dauvergne il y a environ 3 ans

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

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)
#16

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

Formats disponibles : Atom PDF