Projet

Général

Profil

Bug #15712

crash affiche d'un workflow quand on supprime un statut cible d'une erreur d'action webservice

Ajouté par Thomas Noël il y a environ 7 ans. Mis à jour il y a 9 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
31 mars 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

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

#1

Mis à jour par Thomas Noël il y a environ 7 ans

  • Assigné à mis à Thomas Noël
#2

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.

#3

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.

#4

Mis à jour par Thomas Noël il y a environ 7 ans

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

#5

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

  • Statut changé de Nouveau à Fermé
  • Planning mis à Non

Corrigé par #21241.

Formats disponibles : Atom PDF