-
Demande d'amélioration
-
Résolution: Résolu
-
Majeur
-
6.04.28
Dans le cadre du projet CESI, nous avons des profils utilisateur avec plus de 700 rôles.
Lors de la phase de login, une initialisation des permissions est réalisée afin de calculer les permissions par rapport aux rôles.
(AutorisationBean.initialiserPermissionsRoles)
Dans cette méthode, on fabrique une liste de permissions pour laquelle on va comparer chaque élément avec tous les autres afin de déterminer la filiation.
Dans notre cas, les 720 rôles génèrent 630 permissions à comparer, soit 396000 comparaisons. Bien que relativement rapide (une comparaison de périmètre prend en moyenne 150µs), le nombre de comparaisons fait que la phase de login peut durer plusieurs dizaines de secondes (jusqu'à 180s en prod CESI).
La presque totalité des 150µs est consommée par la recherche de filiation des rubriques (serviceRubrique.isParentSection)
Un précalcul des "ancestors" des rubriques permet d'améliorer considérablement les performances (1000x plus performant)