Bug #42854
jump_status fait un "assert" en cas de statut marqué introuvable
0%
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
Révisions associées
trivial: remove leftover pdb statement (#42854)
Historique
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é.
Mis à jour par Frédéric Péters il y a presque 4 ans
- Fichier 0001-workflows-ignore-missing-previous-mark-in-jump-with-.patch 0001-workflows-ignore-missing-previous-mark-in-jump-with-.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
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).
Mis à jour par Frédéric Péters il y a presque 4 ans
- Fichier 0001-workflows-ignore-missing-previous-mark-in-jump-with-.patch 0001-workflows-ignore-missing-previous-mark-in-jump-with-.patch ajouté
(sans l'appel pdb oublié au milieu)
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)
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)
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
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é
workflows: ignore missing previous mark in jump with timeouts (#42854)