Pour information je travaille sur ce sujet aujourd’hui, j’ai bien avancé ce matin et j’ai créé une PR
Mon approche:
Désormais, lorsqu’on enregistre un device où plusieurs fonctionnalités ont a la case « Oui, conserver les états » décochée, je lance des jobs en background qui vont aller nettoyer les états passés, de manière un peu plus smart que ce qui était fait juste que là.
Le job va compter en DB combien il y a d’états / états aggrégés pour chaque feature, puis va nettoyer en petit batch de 1000 les états, afin d’éviter de surcharger la DB. Entre chaque batch, Gladys attend 100ms pour laisser de l’air à Gladys.
Pour cleaner 5 millions d’états, il faut donc 5 millions / 1000 = 5 000 batch.
5 000 * 0.1 = 500 secondes = 8,3 minutes à minima d’attentes entre les batch, si on rajoute 100ms par clean, ça fait 16 minutes pour cleaner 5 millions d’états en arrière plan, de façon non bloquante pour Gladys et en douceur
Côté Gladys, tout job en arrière plan peut-être suivi en direct dans l’onglet « Tâches en arrière plan »: