KamoCRM

Member _ rights _ applished pisze tylko różnicę i czyta role luzem

Performancekamo-shared-library
Shipped
23 września 2026 14:39 UTC
Author
Kamo
Commit
c4924af

Dwie powiązane poprawki do MemberRightsAppliedService, oba w tym samym pliku: 1. bezwarunkowo usunięty i ponownie wstawiony każdy z wierszy praw członka, za każdym razem Uciekli. SecurityService 's MemberRightsBackfillService wywo ³ uje ogólnosystemową ścieżkę dla EVEY org na Każdy but pod (samouzdrawiający, z designu - zobacz jego własny javadoc), a rekompensata jest idemstrong: Stałe-state boot regeneruje identyczny zestaw. Mierzone w produkcji pg _ stat _ statements: ~ 12.7M INSERT przeciwko ~ 30K- rząd tabeli - w przybliżeniu 300 pełne tabeli przepisywania, jeden na but, prawie Wszyscy odpisują dokładnie to, co już tam było. Obie metody teraz diff świeżo obliczony zestaw przeciwko co member _ rights _ applied już posiada (jeden luzem czytane dla całego kawałka) i tylko jasne + przepisać członków, których prawa faktycznie różnią się. No- op boot teraz kosztuje jeden odczyt i zero pisze. 2. kalkulacja Prawa Członków (rdzeń zarówno ścieżki zapisu powyżej jak i tylko read- computeMemberRights SessionReforeController sondaże na każdej sesji odświeżania) chodził member.getRoles (), * * * * * * * * * * * * * * job- title roles () / getRights () oraz member.getRights () jako oddzielne kolekcje leniwych - plus jeszcze jeden leniwy obciążenia na odrębną rolę, dla własnych praw tej roli. Nieograniczony na jednego członka. Sześć nowych opcjonalnych pól repozytorium (MemberRoleRepository, DepartmentRoleRepository, Dział Repozytorium RightRepozytorium, JobTitleRoleRepozytorium, JobTitleRightRepozytorium, MemberRightRepozytorium - pierwszy i ostatni już istniał) zastąpić te leniwe ładunki stałą, małą ilością luzem Pytania, każdy z rolą własnych praw JOIN-FETCHed. Celowo NIE @ EntityGraph Member / TeamMember: obydwa są @ Independence (JOINED), oraz wykres podmiotu, który pobiera dalej stowarzyszenia z jednostki joined jest dokładny kształt, który wziął / prowadzi w dół w produkcji Hibernate 6.2.13 (brakujący wpis klauzuli FROM dla tabeli głównej - patrz LeadAssigneeRef). Każdy nowy repozytorium jest natomiast zakorzenione w jednostce ChildD (z której żaden nie nosi @ Intention) i filtrowane przez identyfikator rodzica. Pole EntityManager z @ Persisterecontext zostało najpierw wypróbowane i cofnięte: jest przetwarzane przez Postprocesor Wiosenny JPA- everytime Spring- orm is on the classpath, so a manually-new 'd usługa w kontekście bez fasoli EntityManagerFactory (SignInReadRetry Wiosenna wiosna z rolką do rąk kontekst, który ćwiczy @ RetriOnDbConflict poprzez prawdziwy proxy AOP) nie udało się BEAN CREATION Oczywiście. Pola optional- reposition degradują się w ten sam sposób, w jaki zastosował już ModelResoluver: @ Autobuiled (required = false) pozostawia je bez fasoli tego typu, a sześć pomocników spada powrót do pierwotnej ścieżki obciążenia lazy-, bez zmian, w każdym istniejącym badaniu. SessionReforeController utrzymuje komputery na żywo (nie z utrzymującego się migawki) - ten punkt końcowy cały punkt jest "co jest prawdą w tej chwili", co nie zawsze jest tym, co było ostatnie.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing