Bug #15712
crash affiche d'un workflow quand on supprime un statut cible d'une erreur d'action webservice
0%
Description
On a une action "appel webservice" avec en cas d'erreur 4xx un statut "foo".
Si on supprime le statut "foo", le workflow ne s'affiche plus, mais on voit cette jolie trace, qui me semble venir du calcul du SVG :
Exception: type = '<type 'exceptions.KeyError'>', value = '' Stack trace (most recent call first): File "/usr/lib/python2.7/dist-packages/wcs/workflows.py", line 374, in get_status 372 if status.id == id: 373 return status > 374 raise KeyError() 375 376 def get_backoffice_fields(self): locals: status = <wcs.workflows.WorkflowStatus object at 0x7f3e2178abd0> self = <Workflow 'Cr\xc3\xa9ation fiche adulte (BO)' id:2> id = '6' File "/usr/lib/python2.7/dist-packages/wcs/wf/wscall.py", line 374, in get_target_status 372 if value in (':pass', ':stop'): 373 continue > 374 targets.append(self.parent.parent.get_status(value)) 375 return targets 376 locals: attribute = 'action_on_app_error' self = <wcs.wf.wscall.WebserviceCallStatusItem object at 0x7f3e217b12d0> targets = [] value = '6' File "/usr/lib/python2.7/dist-packages/wcs/admin/workflows.py", line 456, in _q_index 454 continue 455 for item in status.items: > 456 if self.status in item.get_target_status(): 457 source_status.append(status) 458 break locals: status = <wcs.workflows.WorkflowStatus object at 0x7f3e217b1650> i = 3 self = <wcs.admin.workflows.WorkflowStatusPage object at 0x7f3e2178ab50> source_status = [] item = <wcs.wf.wscall.WebserviceCallStatusItem object at 0x7f3e217b12d0> r = <TemplateIO object at 0x7f3e257b9350> File "/usr/lib/pymodules/python2.7/quixote/directory.py", line 67, in _q_traverse 65 raise TraversalError 66 elif hasattr(obj, '__call__'): > 67 return obj() 68 else: 69 return obj locals: component = '' self = <wcs.admin.workflows.WorkflowStatusPage object at 0x7f3e2178ab50> obj = <bound method WorkflowStatusPage._q_index of <wcs.admin.workflows.WorkflowStatusPage object at 0x7f3e2178ab50>> name = '_q_index' path = [] File "/usr/lib/pymodules/python2.7/quixote/directory.py", line 63, in _q_traverse 61 if path: 62 if hasattr(obj, '_q_traverse'): > 63 return obj._q_traverse(path) 64 else: 65 raise TraversalError locals: component = '4' self = <wcs.admin.workflows.WorkflowStatusDirectory object at 0x7f3e217b1b90> obj = <wcs.admin.workflows.WorkflowStatusPage object at 0x7f3e2178ab50> name = None path = [''] File "/usr/lib/pymodules/python2.7/quixote/directory.py", line 63, in _q_traverse 61 if path: 62 if hasattr(obj, '_q_traverse'): > 63 return obj._q_traverse(path) 64 else: 65 raise TraversalError
(au passage, et pour l'avenir, peut-être se mettre un bon gros try/except lors du rendu svg ?)
Fichiers
Historique
Mis à jour par Frédéric Péters il y a environ 7 ans
(au passage, et pour l'avenir, peut-être se mettre un bon gros try/except lors du rendu svg ?)
Non; c'est utile pour moi d'avoir ces bugs pointés dès le SVG, ça permet par exemple de noter que formdata.status = 'wf-%s' % action
pour le saut en erreur devrait être plus fin, s'assurer que le statut en question existe bien.
Mis à jour par Thomas Noël il y a environ 7 ans
Frédéric Péters a écrit :
(au passage, et pour l'avenir, peut-être se mettre un bon gros try/except lors du rendu svg ?)
Non; c'est utile pour moi d'avoir ces bugs pointés dès le SVG, ça permet par exemple de noter que
formdata.status = 'wf-%s' % action
pour le saut en erreur devrait être plus fin, s'assurer que le statut en question existe bien.
Ah la vache, joli bogue, ça, de se retrouver avec des demandes dans des statuts invalides.
Mis à jour par Thomas Noël il y a environ 7 ans
- Fichier 0001-wscall-don-t-crash-on-invalid-targets-status-15712.patch 0001-wscall-don-t-crash-on-invalid-targets-status-15712.patch ajouté
- Assigné à
Thomas Noëlsupprimé
Je pose un début de patch auquel il manque des tests (ça casse les tests existants, de fait) et une levée d'alerte à faire quelque part lors des sauts qui ratent.
(et je dois faire autre chose, là...)
Mis à jour par Frédéric Péters il y a 9 mois
- Statut changé de Nouveau à Fermé
- Planning mis à Non
Corrigé par #21241.