further optimize global timeouts (#85692) #1026
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/85692-optimize-more-global-timeout"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
L'optimisation introduite pour les global timeouts "finalized" est aussi utilisable pour 1st-arrival et latest-arrival.
Dans le cas de latest-arrival, la requête ne correspond pas au strict minimum des données à analyser, mais le code de validation en python est toujours présent et s'occupera donc de retirer les cas à ne pas traiter. On aura dans tous les cas une réduction drastique du volume de données traité en python.
Ces cas ont été identifiés sur la recette, alors que sur la prod les pires cas étaient avec "finalized".
Il faut attendre #1027 pour ne pas faire les mêmes erreurs ici.
468061bb76
todf2c8ab1d0
b14723b80b
tod7d46f6515
d7d46f6515
tod0232b606f
d0232b606f
to5c807e3b5e
a9ce05e51a
toaca6009812
aca6009812
tocf541e4435
cf541e4435
to8429834b8a
ef320b4f52
to8429834b8a
@ -4130,6 +4130,7 @@ def test_global_timeouts_latest_arrival(pub):
assert formdef.data_class().get(formdata1.id).get_criticality_level_object().name == 'green'
formdata1.evolution[-1].time = time.localtime(time.time() - 5 * 86400)
formdata1.evolution[-1].status = 'wf-new'
Ne trouvant pas de logique derrière le comportement qui était utilisé pour ce test, je suis convaincu qu'il s'agit d'un effet de bord qui ne correspond pas à une attente ou un besoin fonctionnel.
Précédemment, le code insérait les entrées suivantes dans la table evolutions:
Puis mettait à jour la date de la dernière evolution :
Et considérait donc que le workflow était dans l'état new depuis 5 jours suite à un tri par défaut sur la colonne id.
Je ne vois pas pourquoi ce serait le comportement voulu d'un point de vue fonctionnel, d'où cette suggestion de correction.
Si besoin était, je pourrais écrire une requête SQL qui implémenterait aussi ce comportement, mais avant d'écrire quelque chose de bien moins efficace je préfère avoir confirmation de ce fonctionnement, qui n'est présent que dans ce test et nulle part ailleurs.
Oui il y a des raccourcis dans le test mais ça me semble souhaité, ça correspond à plus haut,
L'ajout d'un commentaire, sans changement de statut, crée une nouvelle ligne, un nouveau moment et c'est celui-ci qui doit être considéré pour le calcul de "latest arrival".
Le test vérifie que c'est bien lui qui est pris en compte et pas la première ligne d'évolution.
Plus loin,
modifie le timestamp de l'evolution pour vérifier qu'alors le trigger est déclenché, vérification à nouveau que c'esrt bien cette dernière ligne d'évolution qui est prise en compte.
En ajoutant un statut explicite sur la ligne d'évolution ça fait que le test "que se passe-t-il sur un simple ajout de commentaire qui a ajouté une ligne d'evolution mais pas changé le statut" ne teste plus ça.
Trouvé, en fait ce test a été cassé lors du passage de #65744. Ce test ne respecte pas la règle "Et noter que ce sera toujours le dernier evolution qui sera modifié, jamais les précédents, et peut-être que juste se baser là-dessus serait totalement satisfaisant", et donc un store était manquant.
WIP: further optimize global timeouts (#85692)to further optimize global timeouts (#85692)8429834b8a
tob02d27d39a
b02d27d39a
to55226e336b
55226e336b
toab8471cb50
ab8471cb50
to4582188d55
4582188d55
to806df91081
J'ai ajouté un commit pour réduire un peu la duplication, s'il est ok pour toi je validerai la PR.
C'est ok pour moi, merci