Bug #54858
évaluation des expirations, '<class 'OverflowError'>', value = 'cannot convert float infinity to integer'
Début:
14 juin 2021
Echéance:
% réalisé:
0%
Temps estimé:
Patch proposed:
Oui
Planning:
Non
Description
Exception: type = '<class 'OverflowError'>', value = 'cannot convert float infinity to integer' Stack trace (most recent call first): File "/usr/lib/python3/dist-packages/wcs/wf/jump.py", line 343, in _apply_timeouts 341 LessOrEqual( 342 'last_update_time', > 343 (datetime.datetime.now() - datetime.timedelta(seconds=delay)).timetuple(), 344 ), 345 ] locals: CardDef = <class 'wcs.carddef.CardDef'> FormDef = <class 'wcs.formdef.FormDef'> criterias = [<Equal (attribute: 'status', value: 'wf-15')>, <LessOrEqual (attribute: 'last_update_time', value: time.struct_time(tm_year=2021, tm_mon=6, tm_mday=14, tm_hour=20, tm_min=42, tm_sec=6, tm_wday=0, tm_yday=165, tm_isdst=-1))>] delay = inf
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a presque 3 ans
- Fichier 0001-workflows-don-t-mark-status-as-having-a-timeout-if-i.patch 0001-workflows-don-t-mark-status-as-having-a-timeout-if-i.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
plus bas dans les variables de la trace on peut voir :
'105': {'wf-2': [<JumpWorkflowStatusItem 5>], 'wf-3': [<JumpWorkflowStatusItem 7>], 'wf-8': [<JumpWorkflowStatusItem 1>], 'wf-15': [<JumpWorkflowStatusItem 2>], 'wf-22': [], ...
wf-22 et liste vide, ce qui fait que le délai reste à inf :
delay = math.inf for jump_action in wfs_status[str(formdef.workflow_id)][status_id]: if Template.is_template_string(jump_action.timeout): delay = 0 break delay = min(delay, int(jump_action.timeout))
mais wfs_status = workflows_with_timeout()
devrait retourner uniquement des statuts avec au moins une expiration.
Ce qui se passe ici c'est que l'action de saut avec expiration existe mais avec comme destination un statut qui n'existe pas, et dans cette situation on se trouve avec la liste vide :
if workflow_id not in wfs_status: wfs_status[workflow_id] = {} if status_str_id not in wfs_status[workflow_id]: wfs_status[workflow_id][status_str_id] = [] if not item.get_target_status(): # this will catch status being a removed status continue wfs_status[workflow_id][status_str_id].append(item)
Mis à jour par Thomas Noël il y a presque 3 ans
- Statut changé de Solution proposée à Solution validée
Good catch.
Mis à jour par Frédéric Péters il y a presque 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 39d7b83bd634a8455917ece6d467897b4ac080e2 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Jun 14 21:14:32 2021 +0200 workflows: don't mark status as having a timeout if it's not valid (#54858)
Mis à jour par Frédéric Péters il y a presque 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
workflows: don't mark status as having a timeout if it's not valid (#54858)