Projet

Général

Profil

Bug #49306

RecursionError: maximum recursion depth exceeded in __instancecheck__

Ajouté par Sentry Io il y a plus de 3 ans. Mis à jour il y a 6 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
10 décembre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

https://sentry.entrouvert.org/entrouvert/publik/issues/25182/

RecursionError: maximum recursion depth exceeded in __instancecheck__
(245 additional frame(s) were not displayed)
...
  File "wcs/workflows.py", line 72, in perform_items
    url = item.perform(formdata) or url
  File "wcs/wf/create_formdata.py", line 363, in perform
    new_formdata.perform_workflow()
  File "wcs/formdata.py", line 489, in perform_workflow
    url = perform_items(wf_status.items, self)
  File "wcs/workflows.py", line 72, in perform_items
    url = item.perform(formdata) or url
  File "wcs/qommon/storage.py", line 112, in deep_bytes2str
    if obj is None or isinstance(obj, (int, float, str, time.struct_time, type(Ellipsis))):

Fichiers

0001-wip.patch (997 octets) 0001-wip.patch Lauréline Guérin, 04 janvier 2021 10:17

Demandes liées

Dupliqué par w.c.s. - Bug #67555: RecursionError: maximum recursion depth exceeded in __instancecheck__Rejeté20 juillet 2022

Actions

Historique

#1

Mis à jour par Lauréline Guérin il y a plus de 3 ans

Pour reproduire:
- créer un formulaire, setter un workflow quelconque
- créer un workflow, sur le premier status ajouter un items 'create formdata', le faire pointer sur le formulaire créé précédemment
- updater le premier formulaire, y setter le nouveau workflow
- créer une demande
- plouf

#2

Mis à jour par Lauréline Guérin il y a plus de 3 ans

  • Projet changé de Suivi des traces à w.c.s.
#4

Mis à jour par Thomas Noël il y a plus de 3 ans

Sans doute que dans wcs/workflows.py on pourrait ajouter un except RecursionError en plus du AbortActionException lors du perform_items :

     63 def perform_items(items, formdata, depth=20):
     64     if depth == 0: # prevents infinite loops
     65         return
     66     url = None
     67     old_status = formdata.status
     68     for item in items:
     69         if not item.check_condition(formdata):
     70             continue
     71         try:
     72             url = item.perform(formdata) or url
     73         except AbortActionException:
     74             break
     75         if formdata.status != old_status:
     76             break

(mais là pour l'instant j'arrive pas à écrire un tests qui plante)

#5

Mis à jour par Lauréline Guérin il y a plus de 3 ans

test qui plante

#7

Mis à jour par Frédéric Péters il y a presque 2 ans

  • Dupliqué par Bug #67555: RecursionError: maximum recursion depth exceeded in __instancecheck__ ajouté
#8

Mis à jour par Frédéric Péters il y a 6 mois

  • Statut changé de Nouveau à Fermé

La création récursive de demandes/fiches a été gérée dans #74574.

Formats disponibles : Atom PDF