Projet

Général

Profil

Bug #42854

jump_status fait un "assert" en cas de statut marqué introuvable

Ajouté par Thomas Noël il y a presque 4 ans. Mis à jour il y a presque 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
14 mai 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

class FormData(StorableObject):

    ...

    def jump_status(self, status_id):
        if status_id == '_previous':
            previous_status = self.pop_previous_marked_status()
            assert previous_status, 'failed to compute previous status'
            status_id = previous_status.id
        ...

Ce brutal assert fait que, par exemple, le cron de calcul des sauts s'arrête complétement dès qu'il rencontre un formdata dans cet état.

Sans doute préférable de juste faire un return (éventuellement logguer un truc, mais bof, si y'a pas de marque on saute pas et voilà, its a feature).


Fichiers


Demandes liées

Lié à w.c.s. - Development #35573: crash sur saut vers status précédent si celui-ci n'existe pasFermé26 août 2019

Actions

Révisions associées

Révision db75dcc8 (diff)
Ajouté par Frédéric Péters il y a presque 4 ans

workflows: ignore missing previous mark in jump with timeouts (#42854)

Révision 69e6f699 (diff)
Ajouté par Frédéric Péters il y a presque 4 ans

trivial: remove leftover pdb statement (#42854)

Historique

#1

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

Je serais quand même pour remonter une LoggedError, parce que c'est plus souvent une erreur de construction du workflow qu'une fonctionnalité.

#2

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

Comme je le notais au-dessus, ajout de LoggedError, mais ça pourrait aussi être omis parce que je me suis rendu compte que pour un saut normal (pas sur expiration), l'absence de marqueur fait juste que le saut est ignoré (ça passe par get_target_status qui se trouve dans cette situation retourner une liste vide).

#4

Mis à jour par Thomas Noël il y a presque 4 ans

  • Statut changé de Solution proposée à Solution validée

Go, laissons le LoggedError pour l'instant et ce patch simple qui évite les crashes quand la pile des marqueurs est vide.

(Mais il y aurait sans doute de quoi revenir sur ce jump _previous, je vois que le pop_previous_marked_status qui peut aussi crasher en KeyError si le statut marqué n'existe plus entre temps, par exemple)

#5

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

  • Statut changé de Solution validée à Résolu (à déployer)
commit db75dcc8509bff7a11e51e11db322f3e62a0dff4
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Sat May 23 17:38:16 2020 +0200

    workflows: ignore missing previous mark in jump with timeouts (#42854)
#6

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

  • Statut changé de Résolu (à déployer) à Solution déployée
#7

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

  • Lié à Development #35573: crash sur saut vers status précédent si celui-ci n'existe pas ajouté

Formats disponibles : Atom PDF