KamoCRM

Miembro de derechos aplicado escribe sólo la diferencia, y lee los papeles a granel

Performancekamo-shared-library
Se descapó
23 de septiembre de 2026 a las 14:39 UTC
Autor
Kamo
Compromit
c4924af

Dos correcciones relacionadas con MemberRightsAppliedService, ambos en el mismo archivo: 1. ************* (vía recalcChunk) y ************* incondicionalmente eliminados y reinsertados cada una de las filas de derechos aplicados de un miembro, cada vez Huyeron. Miembro de SecurityServiceBackfillService llama al camino de toda la arena para TODOS Cada bota de vaina (una auto-curación, por diseño, ver su propio javadoc), y el reincompute es idempotente: una bota de estado estacionario re-deriva el conjunto idéntico. Medido en la producción pg.stat-statements: INSERTs de 12.7 millones de INSERT contra una mesa de 30K de ida y medias aproximadamente 300 reescribas de mesa completa, una por bota, casi Todos ellos escribiendo exactamente lo que ya estaba allí. Ambos métodos ahora diff el recién llegado al set en contra de lo que Member-rights-applied ya tiene (una lectura a granel para un trozo entero) y sólo claro. Reescriba a los miembros cuyos derechos realmente Difiere. Una bota sin bacha ahora cuesta una lectura y cero escribe. 2. calcula los derechos de la persona (el núcleo de la ruta de escritura de arriba y la sólo lectura ComputeMemberRights SessionRefreshController encuesta sobre cada sesión refresca) caminó member.getRoles (), **************** roles de oficio()/getRights () y member.getRights () como colecciones perezosas separadas más carga perezosa por rol distinto, por esos derechos propios. Sin destino por miembro. Seis nuevos campos de repositorio opcionales (MemberRoleRepository, DepartmentRoleRepository, DepartmentRightRepository, JobTitleRoleRepository, JobTitleRightRepository, MemberRightRepository - la primera y última ya existente) sustituir esas cargas perezosas por un número fijo y pequeño de volumen cada uno con los propios derechos de un rol únete-FETCHed. Deliberadamente NO un EntityGraph enraizado en Miembro/TeamMember: ambos son "herencia"(JOINED), y un gráfico de entidad que se acerca más asociaciones de una entidad JOINED es la forma exacta que despertó /líota en la producción Hibernate 6.2.13 (desaparecer entrada de cláusula DE la cláusula para la tabla raíz - ver LeadAssigneeRef). Cada nuevo El repositorio está enraizado en la entidad (ninguna de las cuales lleva la herencia) y se filtra por el identificador del padre. Un campo de EntityManager con PersistenciaSe intentó primero y se volvió: es procesado por El post-procesador consciente de la JPA de primavera cada vez que la primavera-orm está en el camino de clase, así que un manualmente-nuevo'd servicio en un contexto sin frijol de EntityManagerFactory (SignInReadRetryTest's hand-roll's hand-rolled Spring contexto, que ejerce la .RetryOnDbConflict a través de un verdadero proxy AOP) falló CREACION BEAN De repente. Los campos opcionales-repositorios se degradan de la misma manera que se aplicaModelResolver ya lo hizo: Aleta de acántarlo (requerido = falso) los deja nulos sin frijol de ese tipo, y los seis ayudantes caen volver a la ruta de carga perezosa original, sin cambios, en cada prueba existente. SessionRefreshController mantiene la computación en vivo (no de la instantánea perseverada) Todo apunta es "lo que es verdad en este momento", que no siempre es lo que se persistió por última vez.

Todos los cambios

Como lo que ves enviaste?

Todo llega a su espacio de trabajo por sí solo. Comience en el plan gratuito y lea esta página de nuevo en un mes.

Arranzar gratis para siempreVer Precios