- Expédié
- 23 septembre 2026 à 14:39 UTC
- Auteur
- Kamo
- Commite
- c4924af
Deux corrections correspondantes à MemberRightsAppliedService, toutes deux dans le même fichier: 1. (via recalcChunk) et rayé inconditionnellement et réinséré chaque rangée de droits de droite appliqué d'un membre, à chaque fois Ils ont couru. MemberService's MemberRightsBackfillService appelle la voie à l'échelle de l'ordre pour TOUT le traitement Chaque botte de pod (une auto-cicatrisation, par conception - voir son propre javadoc), et le recalcul est idempotent: une chaussure à l'état d'équilibre ré-réduit l'ensemble identique. Mesurées dans les états de production de pg-stat-: 12,7 millions d'INSTERT contre une table de 30 K - environ 300 réécritures à table complète, une par coffre, presque Tous écrivant exactement ce qui était déjà là. Les deux méthodes sont maintenant diffamées l'ensemble fraîchement calculus contre ce que le membre - les droits - ont déjà maintenu (on en gros lu pour un morceau de tout) et seulement clair - réécrire les membres dont les droits en fait Les différences. Un boot sans-op coûte maintenant une lecture et zéro écrit. 2. calculerMemberRights (le cœur du chemin d'écriture ci-dessus et du code en lecture seule Enquêtes sur chaque séance de rafraîchis de rafraîchis member.getRoles(), et rôles de titre d'emploi()/getRights() et member.getRights() en tant que collections paresseuses séparées - plus une autre charge paresse paresse par solidarité par rôle distinct, pour les droits de ce rôle. Non limité par membre. Six nouveaux champs de dépôt optionnels (MemberRoleRepository, DepartmentRoleRepository, DépartementDroitRéférentiel, JobTitleRoleRepository, JobTitleRightRepository, MemberRégumorRepository - la première et la dernière existait déjà) remplacer ces charges par des charges fixes et peu nombreuses en vrac demandes d'information, chacune ayant les droits propres à un rôle JOIN-FETCHed. Délibéréement PAS une «Entité-la-l'intolérance» enracinée à Membre/Télépeur: tous deux sont «Héritage» (JOINED) et un graphique d'entité qui va plus loin association à l'exclusion d'une entité JOINED est la forme exacte qui a entraîné/lead en production sur Hibernate 6.2.13 (entrée manquante de clause PART pour le tableau racine - voir LeadAssigneeRef). Chaque nouveau Le dépôt est plutôt ancré à l'entité FILID (dont aucun n'est porté «Hématisme») et filtré par l'id du parent. Un champ EntityManager avec «PersistenceContext a d'abord été essayé et est revenu: il est traité par Le post-processeur de Spring est sensible à la JPA chaque fois que le Spring-orm est sur le chemin de classe, donc un manuelle-nouveau 'd service dans un contexte sans EntityManagerFactory bean (SignInReadRetryTest's handrolled Springs) contexte, qui exerce «RetryOnDb Confflict through a real AOP proxy) C'est tout droit. Les champs de dépôt facultatif se dégradent de la même manière appliquéeModelResolver l'a déjà fait: «Autowired(required - false) les laisse nuls sans haricot de ce type, et les six assistants tombent Retour à la trajectoire de charge paresseuse d'origine, inchangée, dans chaque test existant. SessionRefreshClutinisme continue à calculer en direct (et non à partir de l'instantané persistant) Tout un point est "ce qui est vrai en ce moment", ce qui n'est pas toujours ce qui a persisté pour la fin.
