Bug #49306
RecursionError: maximum recursion depth exceeded in __instancecheck__
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
Demandes liées
Historique
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
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)
Mis à jour par Lauréline Guérin il y a plus de 3 ans
- Fichier 0001-wip.patch 0001-wip.patch ajouté
- Patch proposed changé de Non à Oui
test qui plante
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é
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.